diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 5d74d1fa5..3da1dfb87 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 691fc668c..5b2bcaf25 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -7,7 +7,7 @@ - + \ No newline at end of file diff --git a/kickc.iml b/kickc.iml index 97bb2b573..9d9bb4ce1 100644 --- a/kickc.iml +++ b/kickc.iml @@ -1,6 +1,6 @@ - + diff --git a/pom.xml b/pom.xml index 1fbf6f534..10c5110cf 100644 --- a/pom.xml +++ b/pom.xml @@ -5,8 +5,8 @@ 4.0.0 - 1.7 - 1.7 + 1.8 + 1.8 dk.camelot64.kickc diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java index 47efa436d..639504617 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java @@ -64,7 +64,7 @@ public class AsmFragment { public AsmParameter getBoundValue(String name) { Value boundValue = getBinding(name); if (boundValue == null) { - throw new RuntimeException("Binding '" + name + "' not found in fragment " + name + ".asm"); + throw new RuntimeException("Binding '" + name + "' not found in fragment " + this.name + ".asm"); } if (boundValue instanceof Variable) { Variable boundVar = (Variable) boundValue; @@ -77,12 +77,12 @@ public class AsmFragment { } else if (boundValue instanceof ConstantVar) { ConstantVar constantVar = (ConstantVar) boundValue; String constantValueAsm = getAsmConstant(program, constantVar.getRef(), 99, codeScopeRef); - boolean constantValueZp = SymbolTypeBasic.BYTE.equals(constantVar.getType(program.getScope())); + boolean constantValueZp = SymbolType.BYTE.equals(constantVar.getType(program.getScope())); return new AsmParameter(constantValueAsm, constantValueZp); } else if (boundValue instanceof ConstantValue) { ConstantValue boundConst = (ConstantValue) boundValue; String constantValueAsm = getAsmConstant(program, boundConst, 99, codeScopeRef); - boolean constantValueZp = SymbolTypeBasic.BYTE.equals(boundConst.getType(program.getScope())); + boolean constantValueZp = SymbolType.BYTE.equals(boundConst.getType(program.getScope())); return new AsmParameter(constantValueAsm, constantValueZp); } else if (boundValue instanceof Label) { String param = ((Label) boundValue).getLocalName().replace('@', 'b').replace(':', '_').replace("$", "_"); @@ -363,7 +363,7 @@ public class AsmFragment { public AsmParameter visitAsmExprInt(KickCParser.AsmExprIntContext ctx) { Number number = NumberParser.parseLiteral(ctx.NUMBER().getText()); ConstantInteger intVal = new ConstantInteger(number.intValue()); - boolean isZp = SymbolTypeBasic.BYTE.equals(intVal.getType()); + boolean isZp = SymbolType.BYTE.equals(intVal.getType()); String param = getAsmNumber(number); return new AsmParameter(param, isZp); } diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java index 6dae5d94f..ea74ee737 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java @@ -100,6 +100,17 @@ public class AsmFragmentManager { mapConst.put("cowo3", "cowo2"); mapConst.put("coby2", "coby1"); mapConst.put("coby3", "coby2"); + Map mapZpptrToWord = new LinkedHashMap<>(); + mapZpptrToWord.put("zpptrby1", "zpwo1"); + mapZpptrToWord.put("zpptrby2", "zpwo2"); + mapZpptrToWord.put("zpptrby3", "zpwo3"); + Map mapZpptrToWord2 = new LinkedHashMap<>(); + mapZpptrToWord2.put("zpwo1", "zpwo2"); + mapZpptrToWord2.put("zpptrby1", "zpwo1"); + Map mapZpptrToWord3 = new LinkedHashMap<>(); + mapZpptrToWord3.put("zpwo1", "zpwo3"); + mapZpptrToWord3.put("zpptrby1", "zpwo1"); + mapZpptrToWord3.put("zpptrby2", "zpwo2"); List synths = new ArrayList<>(); @@ -162,6 +173,11 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("(.*)_eq_(xs?by)_then_(.*)", ".*[ax]s?by.*_eq.*", null, "$2_eq_$1_then_$3", null, null)); synths.add(new FragmentSynthesis("(.*)_eq_(ys?by)_then_(.*)", ".*[axy]s?by.*_eq.*", null, "$2_eq_$1_then_$3", null, null)); + synths.add(new FragmentSynthesis("zpptrby1=(coby.|cowo.)_(sethi|setlo|plus|minus)_(.*)", ".*zpwo.*|.*=zpptr.*", null, "zpwo1=$1_$2_$3", null, mapZpptrToWord)); + synths.add(new FragmentSynthesis("zpptrby1=zpptrby([12])_(sethi|setlo|plus|minus)_(.*)", ".*zpwo.*", null, "zpwo1=zpwo$1_$2_$3", null, mapZpptrToWord)); + synths.add(new FragmentSynthesis("zpptrby1=zpptrby1_(sethi|setlo|plus|minus)_zpwo1", null, null, "zpptrby1=zpptrby1_$1_zpwo1", null, mapZpptrToWord2)); + synths.add(new FragmentSynthesis("zpptrby1=zpptrby2_(sethi|setlo|plus|minus)_zpwo1", null, null, "zpptrby1=zpptrby2_$1_zpwo1", null, mapZpptrToWord3)); + for (FragmentSynthesis synth : synths) { CharStream synthesized = synth.synthesize(signature, log); if (synthesized != null) { @@ -176,6 +192,26 @@ public class AsmFragmentManager { } + /** + * Bindings/mappings used when synthesizing one fragment from another fragment. + * Eg. when synthesizing zpby1=zpby2_plus_zpby3 from aby=zpby1_plus_zpby2 the bindings (zpby2->zpby1, zpby3->zpby2) are used. + *

+ * Often the same bindings are used in the signature-name and in the asm-code, but the bindings can be different. + * Eg. when synthesizing zpptrby1=zpptrby2_plus_zpwo1 from zpwo1=zpwo2_plus_zpwo3 the bindings (zpptrby1->zpwo1, zpptrby2->zpwo2, zpwo1->zpwo3) + * are used in the asm, but not in the signature. + */ + private static class FragmentBindings { + + /** Bindings used for renaming in the sub-signature. */ + private Map sigBindings; + /** Bindings used for renaming in the assembler-code. */ + private Map asmBindings; + + + } + + + /** * AsmFragment synthesis based on matching fragment signature and reusing another fragment with added prefix/postfix and some bind-mappings */ diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentSignature.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentSignature.java index 55f2d3698..aa0a9682f 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentSignature.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentSignature.java @@ -283,52 +283,37 @@ public class AsmFragmentSignature { } else if (Registers.RegisterType.REG_ALU.equals(register.getType())) { throw new AsmFragment.AluNotApplicableException(); } - } else if (value instanceof ConstantVar) { - ConstantVar constantVar = (ConstantVar) value; - SymbolType constType = constantVar.getType(); - - if (SymbolTypeBasic.BYTE.equals(constType)) { - String name = "coby" + nextConstByteIdx++; - bindings.put(name, constantVar); - return name; - } else if (SymbolTypeBasic.WORD.equals(constType)) { - String name = "cowo" + nextConstByteIdx++; - bindings.put(name, constantVar); - return name; - } else if (constType instanceof SymbolTypePointer && SymbolTypeBasic.BYTE.equals(((SymbolTypePointer) constType).getElementType())) { - String name = "cowo" + nextConstByteIdx++; - bindings.put(name, constantVar); - return name; + } else if (value instanceof ConstantVar || value instanceof ConstantValue) { + SymbolType constType; + if (value instanceof ConstantVar) { + constType = ((ConstantVar) value).getType(); + } else if(value instanceof ConstantValue) { + constType = SymbolTypeInference.inferType(program.getScope(), (ConstantValue) value); } else { - throw new RuntimeException("Unhandled constant type " + constType); + throw new RuntimeException("Unhandled constant type " + value); } - } else if (value instanceof ConstantInteger) { - ConstantInteger intValue = (ConstantInteger) value; - if (SymbolTypeBasic.BYTE.equals(intValue.getType(program.getScope()))) { + if (SymbolType.BYTE.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isByte())) { String name = "coby" + nextConstByteIdx++; bindings.put(name, value); return name; - } else if (SymbolTypeBasic.WORD.equals(intValue.getType(program.getScope()))) { + } else if (SymbolType.WORD.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isWord())) { String name = "cowo" + nextConstByteIdx++; bindings.put(name, value); return name; - } - } else if (value instanceof ConstantValue) { - SymbolType type = SymbolTypeInference.inferType(program.getScope(), (ConstantValue) value); - if (SymbolTypeBasic.BYTE.equals(type)) { - String name = "coby" + nextConstByteIdx++; + } else if (SymbolType.SBYTE.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isSByte())) { + String name = "cosby" + nextConstByteIdx++; bindings.put(name, value); return name; - } else if (SymbolTypeBasic.WORD.equals(type)) { - String name = "cowo" + nextConstByteIdx++; + } else if (SymbolType.SWORD.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isSWord())) { + String name = "coswo" + nextConstByteIdx++; bindings.put(name, value); return name; - } else if (type instanceof SymbolTypePointer) { + } else if (constType instanceof SymbolTypePointer && SymbolType.BYTE.equals(((SymbolTypePointer) constType).getElementType())) { String name = "cowo" + nextConstByteIdx++; bindings.put(name, value); return name; } else { - throw new RuntimeException("Unhandled constant type " + type); + throw new RuntimeException("Unhandled constant type " + constType); } } else if (value instanceof Label) { String name = "la" + nextLabelIdx++; diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/aby=_byte_zpwo1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/aby=_byte_zpwo1.asm new file mode 100644 index 000000000..27e95a67c --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/aby=_byte_zpwo1.asm @@ -0,0 +1 @@ +lda {zpwo1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_aby.asm deleted file mode 100644 index f28330037..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_aby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sta {zpptrby1}+1 -lda #<{coby1} -sta {zpptrby1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_xby.asm deleted file mode 100644 index eabe69882..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_xby.asm +++ /dev/null @@ -1,3 +0,0 @@ -stx {zpptrby1}+1 -ldx #<{coby1} -stx {zpptrby1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_yby.asm deleted file mode 100644 index 083f61c66..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_yby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sty {zpptrby1}+1 -ldy #<{coby1} -sty {zpptrby1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_zpby1.asm deleted file mode 100644 index cd0a7337b..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=coby1_sethi_zpby1.asm +++ /dev/null @@ -1,4 +0,0 @@ -lda #<{coby1} -sta {zpptrby1} -lda {zpby1} -sta {zpptrby1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_aby.asm deleted file mode 100644 index dd3384948..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_aby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sta {zpptrby1}+1 -lda #<{cowo1} -sta {zpptrby1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_xby.asm deleted file mode 100644 index 6845b2a5b..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_xby.asm +++ /dev/null @@ -1,3 +0,0 @@ -stx {zpptrby1}+1 -ldx #<{cowo1} -stx {zpptrby1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_yby.asm deleted file mode 100644 index f46aea4be..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_yby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sty {zpptrby1}+1 -ldy #<{cowo1} -sty {zpptrby1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_zpby1.asm deleted file mode 100644 index 1ed6840c8..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_sethi_zpby1.asm +++ /dev/null @@ -1,4 +0,0 @@ -lda #<{cowo1} -sta {zpptrby1} -lda {zpby1} -sta {zpptrby1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_aby.asm deleted file mode 100644 index 62af073fb..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_aby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sta {zpptrby1} -lda #>{cowo1} -sta {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_xby.asm deleted file mode 100644 index 2609c7363..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_xby.asm +++ /dev/null @@ -1,3 +0,0 @@ -stx {zpptrby1} -lda #>{cowo1} -sta {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_yby.asm deleted file mode 100644 index 615dfbdac..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_yby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sty {zpptrby1} -lda #>{cowo1} -sta {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_zpby1.asm deleted file mode 100644 index 6f5c986c8..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=cowo1_setlo_zpby1.asm +++ /dev/null @@ -1,4 +0,0 @@ -lda {zpby1} -sta {zpptrby1} -lda #>{cowo1} -sta {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_sethi_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_sethi_aby.asm deleted file mode 100644 index c98a20581..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_sethi_aby.asm +++ /dev/null @@ -1 +0,0 @@ -sta {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_sethi_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_sethi_xby.asm deleted file mode 100644 index 564a51284..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_sethi_xby.asm +++ /dev/null @@ -1 +0,0 @@ -stx {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_sethi_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_sethi_yby.asm deleted file mode 100644 index 3121ec5d9..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_sethi_yby.asm +++ /dev/null @@ -1 +0,0 @@ -sty {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_setlo_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_setlo_aby.asm deleted file mode 100644 index 0dbfa369b..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_setlo_aby.asm +++ /dev/null @@ -1 +0,0 @@ -sta {zpptrby1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_setlo_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_setlo_xby.asm deleted file mode 100644 index 8920b7d5c..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_setlo_xby.asm +++ /dev/null @@ -1 +0,0 @@ -stx {zpptrby1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_setlo_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_setlo_yby.asm deleted file mode 100644 index b44e35ec0..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_setlo_yby.asm +++ /dev/null @@ -1 +0,0 @@ -sty {zpptrby1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_aby.asm deleted file mode 100644 index c95ef856b..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_aby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sta {zpptrby1}+1 -lda {zpptrby2} -sta {zpptrby1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_xby.asm deleted file mode 100644 index ce21a5acf..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_xby.asm +++ /dev/null @@ -1,3 +0,0 @@ -stx {zpptrby1}+1 -lda {zpptrby2} -sta {zpptrby1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_yby.asm deleted file mode 100644 index d580d3076..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_yby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sty {zpptrby1}+1 -lda {zpptrby2} -sta {zpptrby1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_zpby1.asm deleted file mode 100644 index e10cc1bfe..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_sethi_zpby1.asm +++ /dev/null @@ -1,4 +0,0 @@ -lda {zpptrby2} -sta {zpptrby1} -lda {zpby1} -sta {zpptrby1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_aby.asm deleted file mode 100644 index 537c868aa..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_aby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sta {zpptrby1} -lda {zpptrby2}+1 -sta {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_xby.asm deleted file mode 100644 index bbfefa560..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_xby.asm +++ /dev/null @@ -1,3 +0,0 @@ -stx {zpptrby1} -lda {zpptrby2}+1 -sta {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_yby.asm deleted file mode 100644 index 22e10ea9f..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_yby.asm +++ /dev/null @@ -1,3 +0,0 @@ -sty {zpptrby1} -lda {zpptrby2}+1 -sta {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_zpby1.asm deleted file mode 100644 index c0d9b6952..000000000 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby2_setlo_zpby1.asm +++ /dev/null @@ -1,4 +0,0 @@ -lda {zpby1} -sta {zpptrby1} -lda {zpptrby2}+1 -sta {zpptrby1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=_word_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=_word_aby.asm new file mode 100644 index 000000000..704b0857d --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=_word_aby.asm @@ -0,0 +1,3 @@ +sta {zpwo1} +lda #0 +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_aby.asm new file mode 100644 index 000000000..64a2c9749 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_aby.asm @@ -0,0 +1,3 @@ +sta {zpwo1}+1 +lda #<{coby1} +sta {zpwo1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_xby.asm new file mode 100644 index 000000000..82775d4e3 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_xby.asm @@ -0,0 +1,3 @@ +stx {zpwo1}+1 +ldx #<{coby1} +stx {zpwo1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_yby.asm new file mode 100644 index 000000000..3bf602078 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_yby.asm @@ -0,0 +1,3 @@ +sty {zpwo1}+1 +ldy #<{coby1} +sty {zpwo1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_zpby1.asm new file mode 100644 index 000000000..fea54a544 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=coby1_sethi_zpby1.asm @@ -0,0 +1,4 @@ +lda #<{coby1} +sta {zpwo1} +lda {zpby1} +sta {zpwo1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_plus_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_plus_aby.asm new file mode 100644 index 000000000..b4791d1de --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_plus_aby.asm @@ -0,0 +1,7 @@ +clc +adc #<{cowo1} +sta {zpwo1} +lda #>{cowo1} +adc #0 +sta {zpwo1}+1 + diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_aby.asm new file mode 100644 index 000000000..3037fb5e3 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_aby.asm @@ -0,0 +1,3 @@ +sta {zpwo1}+1 +lda #<{cowo1} +sta {zpwo1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_xby.asm new file mode 100644 index 000000000..47d8195a9 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_xby.asm @@ -0,0 +1,3 @@ +stx {zpwo1}+1 +ldx #<{cowo1} +stx {zpwo1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_yby.asm new file mode 100644 index 000000000..ff9e3fb1c --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_yby.asm @@ -0,0 +1,3 @@ +sty {zpwo1}+1 +ldy #<{cowo1} +sty {zpwo1} diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_zpby1.asm new file mode 100644 index 000000000..8bc013250 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_sethi_zpby1.asm @@ -0,0 +1,4 @@ +lda #<{cowo1} +sta {zpwo1} +lda {zpby1} +sta {zpwo1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_aby.asm new file mode 100644 index 000000000..80cadad7b --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_aby.asm @@ -0,0 +1,3 @@ +sta {zpwo1} +lda #>{cowo1} +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_xby.asm new file mode 100644 index 000000000..b72b2066b --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_xby.asm @@ -0,0 +1,3 @@ +stx {zpwo1} +lda #>{cowo1} +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_yby.asm new file mode 100644 index 000000000..a2bcca793 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_yby.asm @@ -0,0 +1,3 @@ +sty {zpwo1} +lda #>{cowo1} +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_zpby1.asm new file mode 100644 index 000000000..f8313dff1 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1_setlo_zpby1.asm @@ -0,0 +1,4 @@ +lda {zpby1} +sta {zpwo1} +lda #>{cowo1} +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_minus_zpwo2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_minus_zpwo2.asm new file mode 100644 index 000000000..db5057bb4 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_minus_zpwo2.asm @@ -0,0 +1,7 @@ +lda {zpwo1} +sec +sbc {zpwo2} +sta {zpwo1} +lda {zpwo1}+1 +sbc {zpwo2}+1 +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_plus_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_plus_aby.asm new file mode 100644 index 000000000..22d455809 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_plus_aby.asm @@ -0,0 +1,6 @@ +clc +adc {zpwo1} +sta {zpwo1} +bcc !+ +inc {zpwo1}+1 +!: \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_plus_zpwo2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_plus_zpwo2.asm new file mode 100644 index 000000000..96c99fd22 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_plus_zpwo2.asm @@ -0,0 +1,8 @@ +lda {zpwo1} +clc +adc {zpwo2} +sta {zpwo1} +lda {zpwo1}+1 +adc {zpwo2}+1 +sta {zpwo1}+1 + diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_sethi_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_sethi_aby.asm new file mode 100644 index 000000000..1d11defcc --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_sethi_aby.asm @@ -0,0 +1 @@ +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_sethi_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_sethi_xby.asm new file mode 100644 index 000000000..7a6bb99d0 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_sethi_xby.asm @@ -0,0 +1 @@ +stx {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_sethi_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_sethi_yby.asm new file mode 100644 index 000000000..c427c54d7 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_sethi_yby.asm @@ -0,0 +1 @@ +sty {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_setlo_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_setlo_aby.asm new file mode 100644 index 000000000..10c42cdf0 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_setlo_aby.asm @@ -0,0 +1 @@ +sta {zpwo1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_setlo_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_setlo_xby.asm new file mode 100644 index 000000000..3ca36930a --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_setlo_xby.asm @@ -0,0 +1 @@ +stx {zpwo1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_setlo_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_setlo_yby.asm new file mode 100644 index 000000000..17d3d6fde --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_setlo_yby.asm @@ -0,0 +1 @@ +sty {zpwo1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_minus_zpwo3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_minus_zpwo3.asm new file mode 100644 index 000000000..d7195edd4 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_minus_zpwo3.asm @@ -0,0 +1,7 @@ +lda {zpwo2} +sec +sbc {zpwo3} +sta {zpwo1} +lda {zpwo2}+1 +sbc {zpwo3}+1 +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_plus_zpwo3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_plus_zpwo3.asm new file mode 100644 index 000000000..bdf7f4206 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_plus_zpwo3.asm @@ -0,0 +1,8 @@ +lda {zpwo1} +clc +adc {zpwo2} +sta {zpwo3} +lda {zpwo1}+1 +adc {zpwo2}+1 +sta {zpwo3}+1 + diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_aby.asm new file mode 100644 index 000000000..24285d5d6 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_aby.asm @@ -0,0 +1,3 @@ +sta {zpwo1}+1 +lda {zpwo2} +sta {zpwo1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_xby.asm new file mode 100644 index 000000000..67f7deac0 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_xby.asm @@ -0,0 +1,3 @@ +stx {zpwo1}+1 +lda {zpwo2} +sta {zpwo1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_yby.asm new file mode 100644 index 000000000..8c9475e93 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_yby.asm @@ -0,0 +1,3 @@ +sty {zpwo1}+1 +lda {zpwo2} +sta {zpwo1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_zpby1.asm new file mode 100644 index 000000000..61ae36338 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_sethi_zpby1.asm @@ -0,0 +1,4 @@ +lda {zpwo2} +sta {zpwo1} +lda {zpby1} +sta {zpwo1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_aby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_aby.asm new file mode 100644 index 000000000..4b32f1ce9 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_aby.asm @@ -0,0 +1,3 @@ +sta {zpwo1} +lda {zpwo2}+1 +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_xby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_xby.asm new file mode 100644 index 000000000..e62731835 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_xby.asm @@ -0,0 +1,3 @@ +stx {zpwo1} +lda {zpwo2}+1 +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_yby.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_yby.asm new file mode 100644 index 000000000..daeb65b18 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_yby.asm @@ -0,0 +1,3 @@ +sty {zpwo1} +lda {zpwo2}+1 +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_zpby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_zpby1.asm new file mode 100644 index 000000000..17bedfe74 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_setlo_zpby1.asm @@ -0,0 +1,4 @@ +lda {zpby1} +sta {zpwo1} +lda {zpwo2}+1 +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantBool.java b/src/main/java/dk/camelot64/kickc/model/ConstantBool.java index 20a461393..d90b5e6b0 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantBool.java +++ b/src/main/java/dk/camelot64/kickc/model/ConstantBool.java @@ -13,7 +13,7 @@ public class ConstantBool implements ConstantValue { @Override public SymbolType getType(ProgramScope scope) { - return SymbolTypeBasic.BOOLEAN; + return SymbolType.BOOLEAN; } @Override diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantChar.java b/src/main/java/dk/camelot64/kickc/model/ConstantChar.java index 8b957a8fc..db33fc0b4 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantChar.java +++ b/src/main/java/dk/camelot64/kickc/model/ConstantChar.java @@ -13,7 +13,7 @@ public class ConstantChar implements ConstantValue { @Override public SymbolType getType(ProgramScope scope) { - return SymbolTypeBasic.BYTE; + return SymbolType.BYTE; } public Character getValue() { @@ -30,7 +30,7 @@ public class ConstantChar implements ConstantValue { if (program == null) { return "'" + value + "'"; } else { - return "(" + SymbolTypeBasic.BYTE.getTypeName() + ") " + "'" + value + "'"; + return "(" + SymbolType.BYTE.getTypeName() + ") " + "'" + value + "'"; } } diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantDouble.java b/src/main/java/dk/camelot64/kickc/model/ConstantDouble.java index faf935883..2a91c3dd7 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantDouble.java +++ b/src/main/java/dk/camelot64/kickc/model/ConstantDouble.java @@ -13,7 +13,7 @@ public class ConstantDouble implements ConstantValue { @Override public SymbolType getType(ProgramScope scope) { - return SymbolTypeBasic.DOUBLE; + return SymbolType.DOUBLE; } public Double getNumber() { @@ -30,7 +30,7 @@ public class ConstantDouble implements ConstantValue { if(program ==null) { return Double.toString(number); } else { - return "(" + SymbolTypeBasic.VOID.getTypeName() + ") " + Double.toString(number); + return "(" + SymbolType.VOID.getTypeName() + ") " + Double.toString(number); } } diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantInteger.java b/src/main/java/dk/camelot64/kickc/model/ConstantInteger.java index ef7f345f0..53e0223ea 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantInteger.java +++ b/src/main/java/dk/camelot64/kickc/model/ConstantInteger.java @@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.ArrayList; + /** SSA form constant integer value */ public class ConstantInteger implements ConstantValue { @@ -25,13 +27,14 @@ public class ConstantInteger implements ConstantValue { } public SymbolType getType() { - SymbolType type; - if (getNumber() < 256) { - type = SymbolTypeBasic.BYTE; - } else { - type = SymbolTypeBasic.WORD; + ArrayList potentialTypes = new ArrayList<>(); + Integer number = getNumber(); + for (SymbolTypeInteger typeInteger : SymbolType.getIntegerTypes()) { + if(number>=typeInteger.getMinValue() && number<= typeInteger.getMaxValue()) { + potentialTypes.add(typeInteger); + } } - return type; + return new SymbolTypeInline(potentialTypes); } @Override diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantString.java b/src/main/java/dk/camelot64/kickc/model/ConstantString.java index cfe33038c..4dae792e6 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantString.java +++ b/src/main/java/dk/camelot64/kickc/model/ConstantString.java @@ -13,7 +13,7 @@ public class ConstantString implements ConstantValue { @Override public SymbolType getType(ProgramScope scope) { - return SymbolTypeBasic.STRING; + return SymbolType.STRING; } public String getValue() { @@ -30,7 +30,7 @@ public class ConstantString implements ConstantValue { if (program == null) { return "\"" + value + "\""; } else { - return "(" + SymbolTypeBasic.STRING.getTypeName() + ") " + "\"" + value + "\""; + return "(" + SymbolType.STRING.getTypeName() + ") " + "\"" + value + "\""; } } diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantValueCalculator.java b/src/main/java/dk/camelot64/kickc/model/ConstantValueCalculator.java new file mode 100644 index 000000000..7b62dd4cb --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/model/ConstantValueCalculator.java @@ -0,0 +1,95 @@ +package dk.camelot64.kickc.model; + +/** Can calculate the exact value for constants (used for type inference).*/ +public class ConstantValueCalculator { + + + private static ConstantValue calcValue(ProgramScope programScope, ConstantValue value) { + if(value instanceof ConstantInteger) { + return value; + } else if(value instanceof ConstantString) { + return value; + } else if(value instanceof ConstantChar) { + ConstantChar charValue = (ConstantChar) value; + return new ConstantInteger((int)charValue.getValue()); + } else if(value instanceof ConstantRef) { + ConstantVar constantVar = programScope.getConstant((ConstantRef) value); + ConstantValue constantVarValue = constantVar.getValue(); + return calcValue(programScope, constantVarValue); + } else if(value instanceof ConstantUnary) { + ConstantUnary unary = (ConstantUnary) value; + return calcValue(programScope, unary.getOperator(), unary.getOperand()); + } else if(value instanceof ConstantBinary) { + ConstantBinary binary = (ConstantBinary) value; + return calcValue(programScope, binary.getLeft(), binary.getOperator(), binary.getRight()); + } else { + throw new RuntimeException("Unknown constant value "+value); + } + } + + + public static ConstantValue calcValue(ProgramScope programScope, Operator operator, ConstantValue value) { + if(operator.equals(Operator.NEG)) { + return neg(calcValue(programScope, value)); + } else if(operator.equals(Operator.POS)) { + return pos(calcValue(programScope, value)); + } + return null; + } + + public static ConstantValue calcValue(ProgramScope programScope, ConstantValue value1, Operator operator, ConstantValue value2) { + if(operator.equals(Operator.MULTIPLY)) { + return multiply(calcValue(programScope, value1), calcValue(programScope, value2)); + } else if(operator.equals(Operator.PLUS)) { + return plus(calcValue(programScope, value1), calcValue(programScope, value2)); + } else if(operator.equals(Operator.MINUS)) { + return minus(calcValue(programScope, value1), calcValue(programScope, value2)); + } else if(operator.equals(Operator.DIVIDE)) { + return div(calcValue(programScope, value1), calcValue(programScope, value2)); + } + return null; + } + + private static ConstantValue neg(ConstantValue value) { + if(value instanceof ConstantInteger) { + return new ConstantInteger(-((ConstantInteger) value).getNumber()); + } + return null; + } + + private static ConstantValue pos(ConstantValue value) { + if(value instanceof ConstantInteger) { + return new ConstantInteger(+((ConstantInteger) value).getNumber()); + } + return null; + } + + private static ConstantValue multiply(ConstantValue value1, ConstantValue value2) { + if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) { + return new ConstantInteger(((ConstantInteger) value1).getNumber()*((ConstantInteger) value2).getNumber()); + } + return null; + } + + private static ConstantValue plus(ConstantValue value1, ConstantValue value2) { + if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) { + return new ConstantInteger(((ConstantInteger) value1).getNumber()+((ConstantInteger) value2).getNumber()); + } + return null; + } + + private static ConstantValue minus(ConstantValue value1, ConstantValue value2) { + if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) { + return new ConstantInteger(((ConstantInteger) value1).getNumber()-((ConstantInteger) value2).getNumber()); + } + return null; + } + + private static ConstantValue div(ConstantValue value1, ConstantValue value2) { + if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) { + return new ConstantInteger(((ConstantInteger) value1).getNumber()/((ConstantInteger) value2).getNumber()); + } + return null; + } + +} diff --git a/src/main/java/dk/camelot64/kickc/model/Label.java b/src/main/java/dk/camelot64/kickc/model/Label.java index 1d7828b53..29756c032 100644 --- a/src/main/java/dk/camelot64/kickc/model/Label.java +++ b/src/main/java/dk/camelot64/kickc/model/Label.java @@ -65,7 +65,7 @@ public class Label implements Symbol { @JsonIgnore public SymbolType getType() { - return SymbolTypeBasic.LABEL; + return SymbolType.LABEL; } @Override diff --git a/src/main/java/dk/camelot64/kickc/model/Operator.java b/src/main/java/dk/camelot64/kickc/model/Operator.java index b985ffe72..dd6ddd0fe 100644 --- a/src/main/java/dk/camelot64/kickc/model/Operator.java +++ b/src/main/java/dk/camelot64/kickc/model/Operator.java @@ -70,9 +70,9 @@ public class Operator { public static Operator getUnary(String op) { switch (op) { case "+": - return UNARY_PLUS; + return POS; case "-": - return UNARY_MINUS; + return NEG; case "++": return INCREMENT; case "--": @@ -93,13 +93,13 @@ public class Operator { } public static Operator getCastUnary(SymbolType castType) { - if (SymbolTypeBasic.BYTE.equals(castType)) { + if (SymbolType.BYTE.equals(castType)) { return CAST_BYTE; - } else if (SymbolTypeBasic.SBYTE.equals(castType)) { + } else if (SymbolType.SBYTE.equals(castType)) { return CAST_SBYTE; - } else if (SymbolTypeBasic.WORD.equals(castType)) { + } else if (SymbolType.WORD.equals(castType)) { return CAST_WORD; - } else if (SymbolTypeBasic.SWORD.equals(castType)) { + } else if (SymbolType.SWORD.equals(castType)) { return CAST_SWORD; } else { throw new RuntimeException("Unknown cast type " + castType); @@ -113,8 +113,8 @@ public class Operator { public static final Operator INCREMENT = new Operator("++", "_inc_", Type.UNARY, 1); public static final Operator DECREMENT = new Operator("--", "_dec_", Type.UNARY, 1); - public static final Operator UNARY_PLUS = new Operator("+", "_pos_", Type.UNARY, 2); - public static final Operator UNARY_MINUS = new Operator("-", "_neg_", Type.UNARY, 2); + public static final Operator POS = new Operator("+", "_pos_", Type.UNARY, 2); + public static final Operator NEG = new Operator("-", "_neg_", Type.UNARY, 2); public static final Operator BOOL_NOT = new Operator("~", "_not_", Type.UNARY, 2); public static final Operator NOT = new Operator("!", "_not_", Type.UNARY, 2); public static final Operator DEREF = new Operator("*", "_deref_", Type.UNARY, 2); diff --git a/src/main/java/dk/camelot64/kickc/model/Registers.java b/src/main/java/dk/camelot64/kickc/model/Registers.java index 9ade365d6..a8d931a17 100644 --- a/src/main/java/dk/camelot64/kickc/model/Registers.java +++ b/src/main/java/dk/camelot64/kickc/model/Registers.java @@ -41,6 +41,7 @@ public class Registers { ZP_BYTE, ZP_SBYTE, ZP_PTR_BYTE, ZP_WORD, + ZP_SWORD, ZP_BOOL, CONSTANT } @@ -147,6 +148,21 @@ public class Registers { } + /** Two zero page addresses used as a register for a single signed word variable. */ + public static class RegisterZpSWord extends RegisterZp { + + public RegisterZpSWord(int zp) { + super(zp); + } + + @Override + public RegisterType getType() { + return RegisterType.ZP_SWORD; + } + + } + + /** A zero page address used as a register for a boolean variable. */ public static class RegisterZpBool extends RegisterZp { diff --git a/src/main/java/dk/camelot64/kickc/model/Scope.java b/src/main/java/dk/camelot64/kickc/model/Scope.java index 9143a6b77..e6e08c88a 100644 --- a/src/main/java/dk/camelot64/kickc/model/Scope.java +++ b/src/main/java/dk/camelot64/kickc/model/Scope.java @@ -113,7 +113,7 @@ public abstract class Scope implements Symbol { public VariableIntermediate addVariableIntermediate() { String name = "$" + intermediateVarCount++; - VariableIntermediate symbol = new VariableIntermediate(name, this, SymbolTypeBasic.VAR); + VariableIntermediate symbol = new VariableIntermediate(name, this, SymbolType.VAR); add(symbol); return symbol; } diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolType.java b/src/main/java/dk/camelot64/kickc/model/SymbolType.java index 24c758430..0c887062d 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolType.java +++ b/src/main/java/dk/camelot64/kickc/model/SymbolType.java @@ -1,18 +1,127 @@ package dk.camelot64.kickc.model; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; +import java.util.ArrayList; +import java.util.Collection; /** Symbol Types */ -@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@type") -@JsonSubTypes({ - @JsonSubTypes.Type(value = SymbolTypeProgram.class, name = "program"), - @JsonSubTypes.Type(value = SymbolTypeBasic.class, name = "basic"), - @JsonSubTypes.Type(value = SymbolTypeArray.class, name = "array"), - @JsonSubTypes.Type(value = SymbolTypePointer.class, name = "pointer"), - @JsonSubTypes.Type(value = SymbolTypeProcedure.class, name = "procedure") -}) public interface SymbolType { - public String getTypeName(); + + /** Unsigned byte (8 bits)). */ + SymbolTypeInteger BYTE = new SymbolTypeInteger("byte", 0, 255); + /** Signed byte (8 bits). */ + SymbolTypeInteger SBYTE = new SymbolTypeInteger("signed byte", -128, 127); + /** Unsigned word (2 bytes, 16 bits). */ + SymbolTypeInteger WORD = new SymbolTypeInteger("word", 0, 65_535); + /** Signed word (2 bytes, 16 bits). */ + SymbolTypeInteger SWORD = new SymbolTypeInteger("signed word", -32_768, 32_767); + /** String value (treated like byte* ). */ + SymbolTypeBasic STRING = new SymbolTypeBasic("string"); + /** Boolean value. */ + SymbolTypeBasic BOOLEAN = new SymbolTypeBasic("boolean"); + /** Numeric floating point value. */ + SymbolTypeBasic DOUBLE = new SymbolTypeBasic("double"); + /** A label. Name of functions of jump-targets. */ + SymbolTypeBasic LABEL = new SymbolTypeBasic("label"); + /** Void type representing no value. */ + SymbolTypeBasic VOID = new SymbolTypeBasic("void"); + /** An unresolved type. Will be infered later. */ + SymbolTypeBasic VAR = new SymbolTypeBasic("var"); + + /** + * Get the name of the type + * @return The type name + */ + String getTypeName(); + + /** + * Get a simple symbol type from the type name. + * @param name The type name. + * @return The simple symbol type + */ + static SymbolType get(String name) { + switch (name) { + case "byte": return BYTE; + case "signed byte": return SBYTE; + case "word": return WORD; + case "signed word": return SWORD; + case "string": return STRING; + case "boolean": return BOOLEAN; + case "void": return VOID; + } + return null; + } + + /** + * Get all integer types. + * @return All integeer types + */ + static Collection getIntegerTypes() { + ArrayList types = new ArrayList<>(); + types.add(BYTE); + types.add(SBYTE); + types.add(WORD); + types.add(SWORD); + return types; + } + + /** + * Is the type {@link #BYTE} or compatible {@link SymbolTypeInline} + * @param type The type to examine + * @return true if the type is BYTE compatible + */ + static boolean isByte(SymbolType type) { + if(BYTE.equals(type)) { + return true; + } else if(type instanceof SymbolTypeInline) { + return ((SymbolTypeInline) type).isByte(); + } else { + return false; + } + } + + /** + * Is the type {@link #SBYTE} or compatible {@link SymbolTypeInline} + * @param type The type to examine + * @return true if the type is SBYTE compatible + */ + static boolean isSByte(SymbolType type) { + if(SBYTE.equals(type)) { + return true; + } else if(type instanceof SymbolTypeInline) { + return ((SymbolTypeInline) type).isSByte(); + } else { + return false; + } + } + + /** + * Is the type {@link #WORD} or compatible {@link SymbolTypeInline} + * @param type The type to examine + * @return true if the type is WORD compatible + */ + static boolean isWord(SymbolType type) { + if(WORD.equals(type)) { + return true; + } else if(type instanceof SymbolTypeInline) { + return ((SymbolTypeInline) type).isWord(); + } else { + return false; + } + } + + /** + * Is the type {@link #SWORD} or compatible {@link SymbolTypeInline} + * @param type The type to examine + * @return true if the type is SWORD compatible + */ + static boolean isSWord(SymbolType type) { + if(SWORD.equals(type)) { + return true; + } else if(type instanceof SymbolTypeInline) { + return ((SymbolTypeInline) type).isSWord(); + } else { + return false; + } + } } diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeBasic.java b/src/main/java/dk/camelot64/kickc/model/SymbolTypeBasic.java index f1d1a5c39..c31d4245d 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeBasic.java +++ b/src/main/java/dk/camelot64/kickc/model/SymbolTypeBasic.java @@ -1,32 +1,11 @@ package dk.camelot64.kickc.model; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - /** Basic Symbol Types */ public class SymbolTypeBasic implements SymbolType { - public static final SymbolTypeBasic BYTE = new SymbolTypeBasic("byte"); - public static final SymbolTypeBasic SBYTE = new SymbolTypeBasic("signed byte"); - - public static final SymbolTypeBasic WORD = new SymbolTypeBasic("word"); - public static final SymbolTypeBasic SWORD = new SymbolTypeBasic("signed word"); - - public static final SymbolTypeBasic STRING = new SymbolTypeBasic("string"); - public static final SymbolTypeBasic BOOLEAN = new SymbolTypeBasic("boolean"); - public static final SymbolTypeBasic DOUBLE = new SymbolTypeBasic("double"); - // A label - public static final SymbolTypeBasic LABEL = new SymbolTypeBasic("label"); - // Void type. - public static final SymbolTypeBasic VOID = new SymbolTypeBasic("void"); - // Unresolved type. Will be infered later - public static final SymbolTypeBasic VAR = new SymbolTypeBasic("var"); - private String typeName; - @JsonCreator - SymbolTypeBasic( - @JsonProperty("typeName") String typeName) { + SymbolTypeBasic(String typeName) { this.typeName = typeName; } @@ -34,19 +13,6 @@ public class SymbolTypeBasic implements SymbolType { return typeName; } - public static SymbolTypeBasic get(String name) { - switch (name) { - case "byte": return BYTE; - case "signed byte": return SBYTE; - case "word": return WORD; - case "signed word": return SWORD; - case "string": return STRING; - case "boolean": return BOOLEAN; - case "void": return VOID; - } - return null; - } - @Override public boolean equals(Object o) { if (this == o) { diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java index 7cab9c4eb..6c6b4ad8a 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java +++ b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java @@ -5,6 +5,39 @@ package dk.camelot64.kickc.model; */ public class SymbolTypeInference { + + /** + * Infer the type of a unary operator on a value + * + * @param programScope The program scope usable for accessing the symbol table + * @param operator The unary operator + * @param rValue The value + * @return The type of the resulting value + */ + public static SymbolType inferType(ProgramScope programScope, Operator operator, RValue rValue) { + if (rValue instanceof ConstantValue) { + ConstantValue value = ConstantValueCalculator.calcValue(programScope, operator, (ConstantValue) rValue); + if (value != null) { + return value.getType(programScope); + } + } + SymbolType valueType = inferType(programScope, rValue); + return inferType(operator, valueType); + } + + public static SymbolType inferType(ProgramScope programScope, RValue rValue1, Operator operator, RValue rValue2) { + if (rValue1 instanceof ConstantValue && rValue2 instanceof ConstantValue) { + ConstantValue value = ConstantValueCalculator.calcValue(programScope, (ConstantValue) rValue1, operator, (ConstantValue) rValue2); + if (value != null) { + return value.getType(programScope); + } + } + SymbolType valueType1 = inferType(programScope, rValue1); + SymbolType valueType2 = inferType(programScope, rValue2); + return inferType(valueType1, operator, valueType2); + } + + public static SymbolType inferType(Operator operator, SymbolType subType) { if (operator == null) { return subType; @@ -16,21 +49,21 @@ public class SymbolTypeInference { throw new RuntimeException("Type error: Dereferencing a non-pointer " + subType); } } else if (Operator.LOWBYTE.equals(operator)) { - if (subType instanceof SymbolTypePointer || SymbolTypeBasic.WORD.equals(subType)) { - return SymbolTypeBasic.BYTE; + if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType)) { + return SymbolType.BYTE; } } else if (Operator.HIBYTE.equals(operator)) { - if (subType instanceof SymbolTypePointer || SymbolTypeBasic.WORD.equals(subType)) { - return SymbolTypeBasic.BYTE; + if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType)) { + return SymbolType.BYTE; } } else if (Operator.CAST_BYTE.equals(operator)) { - return SymbolTypeBasic.BYTE; + return SymbolType.BYTE; } else if (Operator.CAST_SBYTE.equals(operator)) { - return SymbolTypeBasic.SBYTE; + return SymbolType.SBYTE; } else if (Operator.CAST_WORD.equals(operator)) { - return SymbolTypeBasic.WORD; + return SymbolType.WORD; } else if (Operator.CAST_SWORD.equals(operator)) { - return SymbolTypeBasic.SWORD; + return SymbolType.SWORD; } else { return subType; } @@ -38,6 +71,14 @@ public class SymbolTypeInference { } public static SymbolType inferType(SymbolType type1, Operator operator, SymbolType type2) { + + if (operator.equals(Operator.PLUS)) { + return inferPlus(type1, type2); + } else if (operator.equals(Operator.MINUS)) { + return inferMinus(type1, type2); + } + + String op = operator.getOperator(); switch (op) { case "==": @@ -53,41 +94,17 @@ public class SymbolTypeInference { case "||": case "and": case "or": - return SymbolTypeBasic.BOOLEAN; - case "+": - if (type1.equals(SymbolTypeBasic.STRING) && SymbolTypeBasic.BYTE.equals(type2)) { - return SymbolTypeBasic.STRING; - } else if (type1.equals(SymbolTypeBasic.STRING) && SymbolTypeBasic.STRING.equals(type2)) { - return SymbolTypeBasic.STRING; - } - case "-": - // Also continues "+" - if (type1 instanceof SymbolTypePointer && (type2.equals(SymbolTypeBasic.BYTE) || type2.equals(SymbolTypeBasic.WORD))) { - return new SymbolTypePointer(((SymbolTypePointer) type1).getElementType()); - } - if (type1 instanceof SymbolTypePointer && type2 instanceof SymbolTypePointer) { - SymbolType elmType1 = ((SymbolTypePointer) type1).getElementType(); - SymbolType elmType2 = ((SymbolTypePointer) type2).getElementType(); - return inferType(elmType1, operator, elmType2); - } - if (SymbolTypeBasic.WORD.equals(type1) || SymbolTypeBasic.WORD.equals(type2)) { - return SymbolTypeBasic.WORD; - } else if (SymbolTypeBasic.BYTE.equals(type1) && SymbolTypeBasic.BYTE.equals(type2)) { - return SymbolTypeBasic.BYTE; - } else if (SymbolTypeBasic.SBYTE.equals(type1) && SymbolTypeBasic.SBYTE.equals(type2)) { - return SymbolTypeBasic.SBYTE; - } - throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2); + return SymbolType.BOOLEAN; case "*": if (type1 == null && type2 instanceof SymbolTypePointer) { return ((SymbolTypePointer) type2).getElementType(); } - if (SymbolTypeBasic.WORD.equals(type1) || SymbolTypeBasic.WORD.equals(type2)) { - return SymbolTypeBasic.WORD; - } else if (SymbolTypeBasic.BYTE.equals(type1) && SymbolTypeBasic.BYTE.equals(type2)) { - return SymbolTypeBasic.BYTE; - } else if (SymbolTypeBasic.SBYTE.equals(type1) && SymbolTypeBasic.SBYTE.equals(type2)) { - return SymbolTypeBasic.SBYTE; + if (SymbolType.WORD.equals(type1) || SymbolType.WORD.equals(type2)) { + return SymbolType.WORD; + } else if (isByte(type1) && isByte(type2)) { + return SymbolType.BYTE; + } else if (SymbolType.SBYTE.equals(type1) && SymbolType.SBYTE.equals(type2)) { + return SymbolType.SBYTE; } throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2); case "*idx": @@ -96,25 +113,25 @@ public class SymbolTypeInference { } throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2); case "/": - if (type1 instanceof SymbolTypePointer && SymbolTypeBasic.BYTE.equals(type2)) { + if (type1 instanceof SymbolTypePointer && isByte(type2)) { return type1; } case "&": case "|": case "^": - if (SymbolTypeBasic.WORD.equals(type1) || SymbolTypeBasic.WORD.equals(type2)) { - return SymbolTypeBasic.WORD; - } else if (SymbolTypeBasic.BYTE.equals(type1) && SymbolTypeBasic.BYTE.equals(type2)) { - return SymbolTypeBasic.BYTE; + if (SymbolType.WORD.equals(type1) || SymbolType.WORD.equals(type2)) { + return SymbolType.WORD; + } else if (isByte(type1) && isByte(type2)) { + return SymbolType.BYTE; } throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2); case "<<": case ">>": - if (SymbolTypeBasic.WORD.equals(type1)) { - return SymbolTypeBasic.WORD; - } else if (SymbolTypeBasic.BYTE.equals(type1)) { - return SymbolTypeBasic.BYTE; + if (SymbolType.WORD.equals(type1)) { + return SymbolType.WORD; + } else if (isByte(type1)) { + return SymbolType.BYTE; } throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2); default: @@ -122,6 +139,110 @@ public class SymbolTypeInference { } } + private static SymbolType inferPlus(SymbolType type1, SymbolType type2) { + if (type1.equals(SymbolType.STRING) && isByte(type2)) { + return SymbolType.STRING; + } else if (type1.equals(SymbolType.STRING) && SymbolType.STRING.equals(type2)) { + return SymbolType.STRING; + } + if (type1 instanceof SymbolTypePointer && isInteger(type2)) { + return new SymbolTypePointer(((SymbolTypePointer) type1).getElementType()); + } + if (isByte(type1) && isByte(type2)) { + return SymbolType.BYTE; + } + if (isSByte(type1) && isSByte(type2)) { + return SymbolType.SBYTE; + } + if (isWord(type1) && isWord(type2)) { + return SymbolType.WORD; + } + if (isSWord(type1) && isSWord(type2)) { + return SymbolType.SWORD; + } + throw new RuntimeException("Type inference case not handled " + type1 + " " + "+" + " " + type2); + } + + private static SymbolType inferMinus(SymbolType type1, SymbolType type2) { + if (type1 instanceof SymbolTypePointer && isInteger(type2)) { + return new SymbolTypePointer(((SymbolTypePointer) type1).getElementType()); + } + if (type1 instanceof SymbolTypePointer && type2 instanceof SymbolTypePointer) { + return SymbolType.WORD; + } + if (isByte(type1) && isByte(type2)) { + return SymbolType.BYTE; + } + if (isSByte(type1) && isSByte(type2)) { + return SymbolType.SBYTE; + } + if (isWord(type1) && isWord(type2)) { + return SymbolType.WORD; + } + if (isSWord(type1) && isSWord(type2)) { + return SymbolType.SWORD; + } + throw new RuntimeException("Type inference case not handled " + type1 + " " + "+" + " " + type2); + } + + + private static boolean isInteger(SymbolType type) { + if (SymbolType.BYTE.equals(type)) { + return true; + } else if (SymbolType.WORD.equals(type)) { + return true; + } else if (SymbolType.SBYTE.equals(type)) { + return true; + } else if (SymbolType.SWORD.equals(type)) { + return true; + } 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 programScope, RValue rValue) { SymbolType type = null; if (rValue instanceof VariableRef) { @@ -137,11 +258,11 @@ public class SymbolTypeInference { ConstantInteger rInt = (ConstantInteger) rValue; return rInt.getType(programScope); } else if (rValue instanceof ConstantString) { - type = SymbolTypeBasic.STRING; + type = SymbolType.STRING; } else if (rValue instanceof ConstantChar) { - type = SymbolTypeBasic.BYTE; + type = SymbolType.BYTE; } else if (rValue instanceof ConstantBool) { - type = SymbolTypeBasic.BOOLEAN; + type = SymbolType.BOOLEAN; } else if (rValue instanceof ConstantUnary) { ConstantUnary constUnary = (ConstantUnary) rValue; SymbolType subType = inferType(programScope, constUnary.getOperand()); @@ -164,4 +285,5 @@ public class SymbolTypeInference { } return type; } + } diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInline.java b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInline.java new file mode 100644 index 000000000..27ac8bb6d --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInline.java @@ -0,0 +1,76 @@ +package dk.camelot64.kickc.model; + +import java.util.Collection; + +/** + * Symbol Type of an inline numeric expression. Inline expressions can match multiple types depending on the actual value, + * eg. the value 27 matches both byte and signed byte (which can in turn be promoted to word/signed word) , while the value -252 only matches signed word. + */ +public class SymbolTypeInline implements SymbolType { + + /** + * All potential types for the inline constant. + */ + private Collection types; + + public SymbolTypeInline(Collection types) { + this.types = types; + } + + public Collection getTypes() { + return types; + } + + @Override + public String getTypeName() { + StringBuilder name = new StringBuilder(); + boolean first = true; + for (SymbolTypeInteger type : types) { + if(first) { + first = false; + } else { + name.append("/"); + } + name.append(type); + } + return name.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SymbolTypeInline that = (SymbolTypeInline) o; + return types != null ? types.equals(that.types) : that.types == null; + } + + @Override + public int hashCode() { + return types != null ? types.hashCode() : 0; + } + + @Override + public String toString() { + return getTypeName(); + } + + /** + * Is unsigned byte one of the potential types + * @return true if unsigned byte is a potential type + */ + public boolean isByte() { + return types.contains(BYTE); + } + + public boolean isSByte() { + return types.contains(SBYTE); + } + + public boolean isWord() { + return types.contains(WORD); + } + + public boolean isSWord() { + return types.contains(SWORD); + } +} diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInteger.java b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInteger.java new file mode 100644 index 000000000..34abe30fb --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInteger.java @@ -0,0 +1,33 @@ +package dk.camelot64.kickc.model; + +/** Integer symbol types (byte, signed byte, word, ...). */ +public class SymbolTypeInteger implements SymbolType { + + private final String typeName; + private final int minValue; + private final int maxValue; + + SymbolTypeInteger(String typeName, int minValue, int maxValue) { + this.typeName = typeName; + this.minValue = minValue; + this.maxValue = maxValue; + } + + @Override + public String getTypeName() { + return typeName; + } + + public int getMinValue() { + return minValue; + } + + public int getMaxValue() { + return maxValue; + } + + @Override + public String toString() { + return getTypeName(); + } +} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateStatementSequence.java b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateStatementSequence.java index 486eebd3e..32a5405fc 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateStatementSequence.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateStatementSequence.java @@ -273,7 +273,7 @@ public class Pass1GenerateStatementSequence extends KickCBaseVisitor { scopeStack.push(procedure); Label procExit = procedure.addLabel(SymbolRef.PROCEXIT_BLOCK_NAME); VariableUnversioned returnVar = null; - if (!SymbolTypeBasic.VOID.equals(type)) { + if (!SymbolType.VOID.equals(type)) { returnVar = procedure.addVariable("return", type); } List parameterList = new ArrayList<>(); @@ -433,12 +433,12 @@ public class Pass1GenerateStatementSequence extends KickCBaseVisitor { @Override public SymbolType visitTypeSimple(KickCParser.TypeSimpleContext ctx) { - return SymbolTypeBasic.get(ctx.getText()); + return SymbolType.get(ctx.getText()); } @Override public SymbolType visitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx) { - return SymbolTypeBasic.get("signed " + ctx.SIMPLETYPE().getText()); + return SymbolType.get("signed " + ctx.SIMPLETYPE().getText()); } @Override diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java index 6f37b25a0..9cffd1e58 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java @@ -55,7 +55,7 @@ public class Pass1ProcedureCallParameters extends ControlFlowGraphCopyVisitor { currentBlockScope = currentBlockSymbol.getScope(); } splitCurrentBlock(currentBlockScope.addLabelIntermediate().getRef()); - if(!SymbolTypeBasic.VOID.equals(procedure.getReturnType())) { + if(!SymbolType.VOID.equals(procedure.getReturnType())) { addStatementToCurrentBlock(new StatementAssignment(origCall.getlValue(), procReturnVarRef)); } else { // No return type. Remove variable receiving the result. diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java index e72b9fbe8..5db72b5d4 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java @@ -32,7 +32,7 @@ public class Pass1ProcedureCallsReturnValue extends ControlFlowGraphCopyVisitor copyCall.setProcedure(procedureRef); addStatementToCurrentBlock(copyCall); getCurrentBlock().setCallSuccessor(procedure.getLabel().getRef()); - if (!SymbolTypeBasic.VOID.equals(procedure.getReturnType())) { + if (!SymbolType.VOID.equals(procedure.getReturnType())) { // Find return variable final version Label returnBlockLabel = procedure.getLabel(SymbolRef.PROCEXIT_BLOCK_NAME); ControlFlowBlock returnBlock = program.getGraph().getBlock(returnBlockLabel.getRef()); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java b/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java index 50730c637..b8561d25d 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java @@ -36,20 +36,17 @@ public class Pass1TypeInference { LValue lValue = assignment.getlValue(); if (lValue instanceof VariableRef) { Variable symbol = programScope.getVariable((VariableRef) lValue); - if (SymbolTypeBasic.VAR.equals(symbol.getType())) { + if (SymbolType.VAR.equals(symbol.getType())) { // Unresolved symbol - perform inference Operator operator = assignment.getOperator(); if (operator == null || assignment.getrValue1() == null) { // Copy operation or Unary operation RValue rValue = assignment.getrValue2(); - SymbolType subType = SymbolTypeInference.inferType(programScope, rValue); - SymbolType type = SymbolTypeInference.inferType(operator, subType); + SymbolType type = SymbolTypeInference.inferType(programScope, operator, rValue); symbol.setTypeInferred(type); } else { // Binary operation - SymbolType type1 = SymbolTypeInference.inferType(programScope, assignment.getrValue1()); - SymbolType type2 = SymbolTypeInference.inferType(programScope, assignment.getrValue2()); - SymbolType type = SymbolTypeInference.inferType(type1, operator, type2); + SymbolType type = SymbolTypeInference.inferType(programScope, assignment.getrValue1(), assignment.getOperator(), assignment.getrValue2()); symbol.setTypeInferred(type); } } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java index 603b03ceb..a40c03ad9 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java @@ -133,7 +133,7 @@ public class Pass4CodeGeneration { String asmElement = AsmFragment.getAsmConstant(program, element, 99, scopeRef); asmElements.add(asmElement); } - if(SymbolTypeBasic.BYTE.equals(constantArray.getElementType())) { + if(SymbolType.isByte(constantArray.getElementType())) { asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmElements); added.add(asmName); } else { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java index ade14b2a9..8188af597 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java @@ -67,7 +67,7 @@ public class Pass4RegistersFinalize extends Pass2Base { continue; } else { // Be unhappy (if this triggers in the future extend with ability to create new names by adding suffixes) - throw new RuntimeException("ASM name already used "+asmName); + throw new RuntimeException("ASM name already used " + asmName); } } } @@ -91,7 +91,7 @@ public class Pass4RegistersFinalize extends Pass2Base { continue; } else { // Be unhappy (if this triggers in the future extend with ability to create new names by adding suffixes) - throw new RuntimeException("ASM name already used "+asmName); + throw new RuntimeException("ASM name already used " + asmName); } } @@ -129,23 +129,28 @@ public class Pass4RegistersFinalize extends Pass2Base { * Create a new register for a specific variable type. * * @param variable The variable to create a register for. - * The register type created uses one or more zero page locations based on the variable type + * The register type created uses one or more zero page locations based on the variable type * @return The new zeropage register */ private Registers.Register allocateNewRegisterZp(Variable variable) { SymbolType varType = variable.getType(); - if (varType.equals(SymbolTypeBasic.BYTE)) { + if (SymbolType.isByte(varType)) { return new Registers.RegisterZpByte(currentZp++); - } else if (varType.equals(SymbolTypeBasic.SBYTE)) { + } else if (SymbolType.isSByte(varType)) { return new Registers.RegisterZpSignedByte(currentZp++); - } else if (varType.equals(SymbolTypeBasic.WORD)) { + } else if (SymbolType.isWord(varType)) { Registers.RegisterZpWord registerZpWord = new Registers.RegisterZpWord(currentZp); currentZp = currentZp + 2; return registerZpWord; - } else if (varType.equals(SymbolTypeBasic.BOOLEAN)) { + } else if (SymbolType.isSWord(varType)) { + Registers.RegisterZpSWord registerZpSWord = + new Registers.RegisterZpSWord(currentZp); + currentZp = currentZp + 2; + return registerZpSWord; + } else if (varType.equals(SymbolType.BOOLEAN)) { return new Registers.RegisterZpBool(currentZp++); - } else if (varType.equals(SymbolTypeBasic.VOID)) { + } else if (varType.equals(SymbolType.VOID)) { // No need to setRegister register for VOID value return null; } else if (varType instanceof SymbolTypePointer) { diff --git a/src/main/java/dk/camelot64/kickc/test/TestPrograms.java b/src/main/java/dk/camelot64/kickc/test/TestPrograms.java index ad3a8f27f..e95219a40 100644 --- a/src/main/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/main/java/dk/camelot64/kickc/test/TestPrograms.java @@ -24,6 +24,10 @@ public class TestPrograms extends TestCase { helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/"); } + public void testZpptr() throws IOException, URISyntaxException { + compileAndCompare("zpptr"); + } + public void testCasting() throws IOException, URISyntaxException { compileAndCompare("casting"); } diff --git a/src/main/java/dk/camelot64/kickc/test/bitmap-bresenham.kc b/src/main/java/dk/camelot64/kickc/test/bitmap-bresenham.kc index aebfe2dbd..e2a0ad792 100644 --- a/src/main/java/dk/camelot64/kickc/test/bitmap-bresenham.kc +++ b/src/main/java/dk/camelot64/kickc/test/bitmap-bresenham.kc @@ -140,7 +140,7 @@ void line_ydxd(byte y, byte x, byte y1, byte yd, byte xd) { void plot(byte x, byte y) { byte* plotter_x = 0; - byte* plotter_y = 0; + word plotter_y = 0; >plotter_x = plot_xhi[x]; // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; plotter_y = plot_yhi[y]; diff --git a/src/main/java/dk/camelot64/kickc/test/bitmap-plotter.kc b/src/main/java/dk/camelot64/kickc/test/bitmap-plotter.kc index b4c8f34d5..6bc6ea1af 100644 --- a/src/main/java/dk/camelot64/kickc/test/bitmap-plotter.kc +++ b/src/main/java/dk/camelot64/kickc/test/bitmap-plotter.kc @@ -51,7 +51,7 @@ const byte[] plot_bit = $1400; void plot(byte x, byte y) { byte* plotter_x = 0; - byte* plotter_y = 0; + word plotter_y = 0; >plotter_x = plot_xhi[x]; // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; plotter_y = plot_yhi[y]; diff --git a/src/main/java/dk/camelot64/kickc/test/casting.kc b/src/main/java/dk/camelot64/kickc/test/casting.kc index 007e3336e..73103964d 100644 --- a/src/main/java/dk/camelot64/kickc/test/casting.kc +++ b/src/main/java/dk/camelot64/kickc/test/casting.kc @@ -1,13 +1,26 @@ byte* SCREEN = $0400; -byte* SCREEN2 = $0600; +byte* SCREEN2 = SCREEN+40*3; +byte* SCREEN3 = SCREEN+40*6; void main() { for( byte b: 0..100) { - byte b2 = 100-b; // Subtract byte from byte (not signed) - SCREEN2[b] = b2; + //Subtract unsigned byte from unsigned byte + byte b2 = 200-b; + SCREEN[b] = b2; + // Cast unsigned byte to signed byte & negate signed byte sb = - (signed byte)b; - SCREEN[b] = (byte)sb; + SCREEN2[b] = (byte)sb; } - + w(); } + +void w() { + for(byte i : 0..10) { + word w1 = 1300; + word w2 = 1250; + byte b = (byte)(w1-w2); + byte b2 = 1400-1350+i; + SCREEN3[i] = b2; + } +} diff --git a/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.cfg b/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.cfg index 9a5dee775..b4bb0c93c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.cfg @@ -8,31 +8,31 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#4 ← phi( main/(byte) 0 main::@5/(byte) main::i#1 ) [ main::i#4 ] ( main:0 [ main::i#4 ] ) + [2] (byte) main::i#4 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::i#1 ) [ main::i#4 ] ( main:0 [ main::i#4 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - [3] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::j#1 ) [ main::i#4 main::j#2 ] ( main:0 [ main::i#4 main::j#2 ] ) + [3] (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#1 ) [ main::i#4 main::j#2 ] ( main:0 [ main::i#4 main::j#2 ] ) [4] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 [ main::i#4 main::j#2 ] ( main:0 [ main::i#4 main::j#2 ] ) [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) - [6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) + [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) to:main::@5 main::@5: scope:[main] from main::@2 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@3 main::@3: scope:[main] from main::@5 main::@7 - [9] (byte) main::k#4 ← phi( main::@5/(byte) 0 main::@7/(byte) main::k#1 ) [ main::k#4 ] ( main:0 [ main::k#4 ] ) + [9] (byte) main::k#4 ← phi( main::@5/(byte/signed byte/word/signed word) 0 main::@7/(byte) main::k#1 ) [ main::k#4 ] ( main:0 [ main::k#4 ] ) to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - [10] (byte) main::l#2 ← phi( main::@3/(byte) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] ( main:0 [ main::k#4 main::l#2 ] ) + [10] (byte) main::l#2 ← phi( main::@3/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] ( main:0 [ main::k#4 main::l#2 ] ) asm { eor#$55tax } [12] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:0 [ main::k#4 main::l#2 ] ) [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) - [14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) + [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) to:main::@7 main::@7: scope:[main] from main::@4 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] ) - [16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) + [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) to:main::@return main::@return: scope:[main] from main::@7 [17] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.log b/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.log index 676375309..e8b9d7440 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.log @@ -21,30 +21,30 @@ void main() { } PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 main::@2: *((byte*) SCREEN + (byte) main::i) ← (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$0 ← (byte) main::j != (byte) 101 + (boolean~) main::$0 ← (byte) main::j != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 101 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 - (byte) main::k ← (byte) 0 + (byte) main::k ← (byte/signed byte/word/signed word) 0 main::@3: - (byte) main::l ← (byte) 0 + (byte) main::l ← (byte/signed byte/word/signed word) 0 main::@4: asm { eor#$55tax } *((byte*) SCREEN + (byte) main::k) ← (byte) main::l (byte) main::l ← ++ (byte) main::l - (boolean~) main::$2 ← (byte) main::l != (byte) 101 + (boolean~) main::$2 ← (byte) main::l != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 (byte) main::k ← ++ (byte) main::k - (boolean~) main::$3 ← (byte) main::k != (byte) 101 + (boolean~) main::$3 ← (byte) main::k != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 main::@return: return @@ -70,41 +70,41 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 *((byte*) SCREEN + (byte) main::i) ← (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$0 ← (byte) main::j != (byte) 101 + (boolean~) main::$0 ← (byte) main::j != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 101 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - (byte) main::k ← (byte) 0 + (byte) main::k ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 - (byte) main::l ← (byte) 0 + (byte) main::l ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN + (byte) main::k) ← (byte) main::l (byte) main::l ← ++ (byte) main::l - (boolean~) main::$2 ← (byte) main::l != (byte) 101 + (boolean~) main::$2 ← (byte) main::l != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k ← ++ (byte) main::k - (boolean~) main::$3 ← (byte) main::k != (byte) 101 + (boolean~) main::$3 ← (byte) main::k != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 to:main::@8 main::@8: scope:[main] from main::@7 @@ -120,41 +120,41 @@ main::@return: scope:[main] from main::@8 Removing empty block main::@8 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 *((byte*) SCREEN + (byte) main::i) ← (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$0 ← (byte) main::j != (byte) 101 + (boolean~) main::$0 ← (byte) main::j != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 101 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - (byte) main::k ← (byte) 0 + (byte) main::k ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 - (byte) main::l ← (byte) 0 + (byte) main::l ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN + (byte) main::k) ← (byte) main::l (byte) main::l ← ++ (byte) main::l - (boolean~) main::$2 ← (byte) main::l != (byte) 101 + (boolean~) main::$2 ← (byte) main::l != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k ← ++ (byte) main::k - (boolean~) main::$3 ← (byte) main::k != (byte) 101 + (boolean~) main::$3 ← (byte) main::k != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 @@ -169,41 +169,41 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 *((byte*) SCREEN + (byte) main::i) ← (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$0 ← (byte) main::j != (byte) 101 + (boolean~) main::$0 ← (byte) main::j != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 101 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - (byte) main::k ← (byte) 0 + (byte) main::k ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 - (byte) main::l ← (byte) 0 + (byte) main::l ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN + (byte) main::k) ← (byte) main::l (byte) main::l ← ++ (byte) main::l - (boolean~) main::$2 ← (byte) main::l != (byte) 101 + (boolean~) main::$2 ← (byte) main::l != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k ← ++ (byte) main::k - (boolean~) main::$3 ← (byte) main::k != (byte) 101 + (boolean~) main::$3 ← (byte) main::k != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 @@ -222,16 +222,16 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#4 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#5 main::@5/(byte*) SCREEN#6 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::i#2 ← phi( main::@1/(byte) main::i#4 main::@2/(byte) main::i#2 ) @@ -239,24 +239,24 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$0 ← (byte) main::j#1 != (byte) 101 + (boolean~) main::$0 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte*) SCREEN#6 ← phi( main::@2/(byte*) SCREEN#1 ) (byte) main::i#3 ← phi( main::@2/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 (byte*) SCREEN#7 ← phi( main::@5/(byte*) SCREEN#6 ) - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 (byte) main::k#4 ← phi( main::@6/(byte) main::k#0 main::@7/(byte) main::k#1 ) (byte*) SCREEN#4 ← phi( main::@6/(byte*) SCREEN#7 main::@7/(byte*) SCREEN#8 ) - (byte) main::l#0 ← (byte) 0 + (byte) main::l#0 ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 (byte) main::k#2 ← phi( main::@3/(byte) main::k#4 main::@4/(byte) main::k#2 ) @@ -265,14 +265,14 @@ main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN#2 + (byte) main::k#2) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$2 ← (byte) main::l#1 != (byte) 101 + (boolean~) main::$2 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte*) SCREEN#8 ← phi( main::@4/(byte*) SCREEN#2 ) (byte) main::k#3 ← phi( main::@4/(byte) main::k#2 ) (byte) main::k#1 ← ++ (byte) main::k#3 - (boolean~) main::$3 ← (byte) main::k#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 @@ -288,16 +288,16 @@ main::@return: scope:[main] from main::@7 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#4 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#5 main::@5/(byte*) SCREEN#6 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::i#2 ← phi( main::@1/(byte) main::i#4 main::@2/(byte) main::i#2 ) @@ -305,24 +305,24 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$0 ← (byte) main::j#1 != (byte) 101 + (boolean~) main::$0 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte*) SCREEN#6 ← phi( main::@2/(byte*) SCREEN#1 ) (byte) main::i#3 ← phi( main::@2/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 (byte*) SCREEN#7 ← phi( main::@5/(byte*) SCREEN#6 ) - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 (byte) main::k#4 ← phi( main::@6/(byte) main::k#0 main::@7/(byte) main::k#1 ) (byte*) SCREEN#4 ← phi( main::@6/(byte*) SCREEN#7 main::@7/(byte*) SCREEN#8 ) - (byte) main::l#0 ← (byte) 0 + (byte) main::l#0 ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 (byte) main::k#2 ← phi( main::@3/(byte) main::k#4 main::@4/(byte) main::k#2 ) @@ -331,14 +331,14 @@ main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN#2 + (byte) main::k#2) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$2 ← (byte) main::l#1 != (byte) 101 + (boolean~) main::$2 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte*) SCREEN#8 ← phi( main::@4/(byte*) SCREEN#2 ) (byte) main::k#3 ← phi( main::@4/(byte) main::k#2 ) (byte) main::k#1 ← ++ (byte) main::k#3 - (boolean~) main::$3 ← (byte) main::k#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 @@ -406,16 +406,16 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#4 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#5 main::@5/(byte*) SCREEN#6 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::i#2 ← phi( main::@1/(byte) main::i#4 main::@2/(byte) main::i#2 ) @@ -423,24 +423,24 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$0 ← (byte) main::j#1 != (byte) 101 + (boolean~) main::$0 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte*) SCREEN#6 ← phi( main::@2/(byte*) SCREEN#1 ) (byte) main::i#3 ← phi( main::@2/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 (byte*) SCREEN#7 ← phi( main::@5/(byte*) SCREEN#6 ) - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 (byte) main::k#4 ← phi( main::@6/(byte) main::k#0 main::@7/(byte) main::k#1 ) (byte*) SCREEN#4 ← phi( main::@6/(byte*) SCREEN#7 main::@7/(byte*) SCREEN#8 ) - (byte) main::l#0 ← (byte) 0 + (byte) main::l#0 ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 (byte) main::k#2 ← phi( main::@3/(byte) main::k#4 main::@4/(byte) main::k#2 ) @@ -449,14 +449,14 @@ main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN#2 + (byte) main::k#2) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$2 ← (byte) main::l#1 != (byte) 101 + (boolean~) main::$2 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte*) SCREEN#8 ← phi( main::@4/(byte*) SCREEN#2 ) (byte) main::k#3 ← phi( main::@4/(byte) main::k#2 ) (byte) main::k#1 ← ++ (byte) main::k#3 - (boolean~) main::$3 ← (byte) main::k#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 @@ -476,15 +476,15 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#8 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#4 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#0 main::@5/(byte*) SCREEN#1 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::i#2 ← phi( main::@1/(byte) main::i#4 main::@2/(byte) main::i#2 ) @@ -492,21 +492,21 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$0 ← (byte) main::j#1 != (byte) 101 + (boolean~) main::$0 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 (byte) main::k#4 ← phi( main::@6/(byte) main::k#0 main::@7/(byte) main::k#1 ) (byte*) SCREEN#4 ← phi( main::@6/(byte*) SCREEN#1 main::@7/(byte*) SCREEN#2 ) - (byte) main::l#0 ← (byte) 0 + (byte) main::l#0 ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 (byte) main::k#2 ← phi( main::@3/(byte) main::k#4 main::@4/(byte) main::k#2 ) @@ -515,12 +515,12 @@ main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN#2 + (byte) main::k#2) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$2 ← (byte) main::l#1 != (byte) 101 + (boolean~) main::$2 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#2 - (boolean~) main::$3 ← (byte) main::k#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 @@ -538,15 +538,15 @@ Self Phi Eliminated (byte) main::k#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#4 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#0 main::@5/(byte*) SCREEN#1 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::i#2 ← phi( main::@1/(byte) main::i#4 ) @@ -554,21 +554,21 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$0 ← (byte) main::j#1 != (byte) 101 + (boolean~) main::$0 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 (byte) main::k#4 ← phi( main::@6/(byte) main::k#0 main::@7/(byte) main::k#1 ) (byte*) SCREEN#4 ← phi( main::@6/(byte*) SCREEN#1 main::@7/(byte*) SCREEN#2 ) - (byte) main::l#0 ← (byte) 0 + (byte) main::l#0 ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 (byte) main::k#2 ← phi( main::@3/(byte) main::k#4 ) @@ -577,12 +577,12 @@ main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN#2 + (byte) main::k#2) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$2 ← (byte) main::l#1 != (byte) 101 + (boolean~) main::$2 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#2 - (boolean~) main::$3 ← (byte) main::k#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 @@ -600,47 +600,47 @@ Redundant Phi (byte) main::k#2 (byte) main::k#4 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#4 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#0 main::@5/(byte*) SCREEN#3 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#3 + (byte) main::i#4) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$0 ← (byte) main::j#1 != (byte) 101 + (boolean~) main::$0 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$0) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#4 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$1) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 (byte) main::k#4 ← phi( main::@6/(byte) main::k#0 main::@7/(byte) main::k#1 ) (byte*) SCREEN#4 ← phi( main::@6/(byte*) SCREEN#3 main::@7/(byte*) SCREEN#4 ) - (byte) main::l#0 ← (byte) 0 + (byte) main::l#0 ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 (byte) main::l#2 ← phi( main::@3/(byte) main::l#0 main::@4/(byte) main::l#1 ) asm { eor#$55tax } *((byte*) SCREEN#4 + (byte) main::k#4) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$2 ← (byte) main::l#1 != (byte) 101 + (boolean~) main::$2 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$2) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#4 - (boolean~) main::$3 ← (byte) main::k#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 @@ -651,51 +651,51 @@ main::@return: scope:[main] from main::@7 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$0 if((byte) main::j#1!=(byte) 101) goto main::@2 -Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte) 101) goto main::@1 -Simple Condition (boolean~) main::$2 if((byte) main::l#1!=(byte) 101) goto main::@4 -Simple Condition (boolean~) main::$3 if((byte) main::k#1!=(byte) 101) goto main::@3 +Simple Condition (boolean~) main::$0 if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 +Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 +Simple Condition (boolean~) main::$2 if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 +Simple Condition (boolean~) main::$3 if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#4 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#0 main::@5/(byte*) SCREEN#3 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#3 + (byte) main::i#4) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 101) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#4 - if((byte) main::i#1!=(byte) 101) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@6 main::@7 (byte) main::k#4 ← phi( main::@6/(byte) main::k#0 main::@7/(byte) main::k#1 ) (byte*) SCREEN#4 ← phi( main::@6/(byte*) SCREEN#3 main::@7/(byte*) SCREEN#4 ) - (byte) main::l#0 ← (byte) 0 + (byte) main::l#0 ← (byte/signed byte/word/signed word) 0 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 (byte) main::l#2 ← phi( main::@3/(byte) main::l#0 main::@4/(byte) main::l#1 ) asm { eor#$55tax } *((byte*) SCREEN#4 + (byte) main::k#4) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - if((byte) main::l#1!=(byte) 101) goto main::@4 + if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#4 - if((byte) main::k#1!=(byte) 101) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 return @@ -724,11 +724,11 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(const byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#3 + (byte) main::i#4) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 101) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#4 - if((byte) main::i#1!=(byte) 101) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 to:main::@3 @@ -741,11 +741,11 @@ main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN#4 + (byte) main::k#4) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - if((byte) main::l#1!=(byte) 101) goto main::@4 + if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#4 - if((byte) main::k#1!=(byte) 101) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 return @@ -770,11 +770,11 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(const byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#3 + (byte) main::i#4) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 101) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#4 - if((byte) main::i#1!=(byte) 101) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 main::@7 (byte) main::k#4 ← phi( main::@5/(const byte) main::k#0 main::@7/(byte) main::k#1 ) @@ -785,11 +785,11 @@ main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN#4 + (byte) main::k#4) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - if((byte) main::l#1!=(byte) 101) goto main::@4 + if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#4 - if((byte) main::k#1!=(byte) 101) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 return @@ -815,11 +815,11 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(const byte) main::j#0 main::@2/(byte) main::j#1 ) *((byte*) SCREEN#3 + (byte) main::i#4) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 101) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#4 - if((byte) main::i#1!=(byte) 101) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 main::@7 (byte) main::k#4 ← phi( main::@5/(const byte) main::k#0 main::@7/(byte) main::k#1 ) @@ -830,11 +830,11 @@ main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((byte*) SCREEN#4 + (byte) main::k#4) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - if((byte) main::l#1!=(byte) 101) goto main::@4 + if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#4 - if((byte) main::k#1!=(byte) 101) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 return @@ -859,11 +859,11 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@1/(const byte) main::j#0 main::@2/(byte) main::j#1 ) *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 101) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#4 - if((byte) main::i#1!=(byte) 101) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 main::@7 (byte) main::k#4 ← phi( main::@5/(const byte) main::k#0 main::@7/(byte) main::k#1 ) @@ -873,11 +873,11 @@ main::@4: scope:[main] from main::@3 main::@4 asm { eor#$55tax } *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - if((byte) main::l#1!=(byte) 101) goto main::@4 + if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#4 - if((byte) main::k#1!=(byte) 101) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 return @@ -895,10 +895,10 @@ Inlining constant with var siblings (const byte) main::k#0 Inlining constant with var siblings (const byte) main::k#0 Inlining constant with var siblings (const byte) main::l#0 Inlining constant with var siblings (const byte) main::l#0 -Constant inlined main::l#0 = (byte) 0 -Constant inlined main::k#0 = (byte) 0 -Constant inlined main::j#0 = (byte) 0 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::k#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::j#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::l#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -906,31 +906,31 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::i#4 ← phi( main/(byte) 0 main::@5/(byte) main::i#1 ) + (byte) main::i#4 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::i#1 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::j#1 ) + (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#1 ) *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 101) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#4 - if((byte) main::i#1!=(byte) 101) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 main::@7 - (byte) main::k#4 ← phi( main::@5/(byte) 0 main::@7/(byte) main::k#1 ) + (byte) main::k#4 ← phi( main::@5/(byte/signed byte/word/signed word) 0 main::@7/(byte) main::k#1 ) to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - (byte) main::l#2 ← phi( main::@3/(byte) 0 main::@4/(byte) main::l#1 ) + (byte) main::l#2 ← phi( main::@3/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::l#1 ) asm { eor#$55tax } *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - if((byte) main::l#1!=(byte) 101) goto main::@4 + if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#4 - if((byte) main::k#1!=(byte) 101) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 to:main::@return main::@return: scope:[main] from main::@7 return @@ -945,7 +945,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -983,31 +983,31 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@9 - (byte) main::i#4 ← phi( main/(byte) 0 main::@9/(byte~) main::i#5 ) + (byte) main::i#4 ← phi( main/(byte/signed byte/word/signed word) 0 main::@9/(byte~) main::i#5 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@10 - (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@10/(byte~) main::j#3 ) + (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@10/(byte~) main::j#3 ) *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 101) goto main::@10 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@10 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::i#1 ← ++ (byte) main::i#4 - if((byte) main::i#1!=(byte) 101) goto main::@9 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@9 to:main::@3 main::@3: scope:[main] from main::@11 main::@5 - (byte) main::k#4 ← phi( main::@5/(byte) 0 main::@11/(byte~) main::k#5 ) + (byte) main::k#4 ← phi( main::@5/(byte/signed byte/word/signed word) 0 main::@11/(byte~) main::k#5 ) to:main::@4 main::@4: scope:[main] from main::@12 main::@3 - (byte) main::l#2 ← phi( main::@3/(byte) 0 main::@12/(byte~) main::l#3 ) + (byte) main::l#2 ← phi( main::@3/(byte/signed byte/word/signed word) 0 main::@12/(byte~) main::l#3 ) asm { eor#$55tax } *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 (byte) main::l#1 ← ++ (byte) main::l#2 - if((byte) main::l#1!=(byte) 101) goto main::@12 + if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@12 to:main::@7 main::@7: scope:[main] from main::@4 (byte) main::k#1 ← ++ (byte) main::k#4 - if((byte) main::k#1!=(byte) 101) goto main::@11 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@11 to:main::@return main::@return: scope:[main] from main::@7 return @@ -1044,31 +1044,31 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@9 - [2] (byte) main::i#4 ← phi( main/(byte) 0 main::@9/(byte~) main::i#5 ) [ main::i#4 ] + [2] (byte) main::i#4 ← phi( main/(byte/signed byte/word/signed word) 0 main::@9/(byte~) main::i#5 ) [ main::i#4 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@10 - [3] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@10/(byte~) main::j#3 ) [ main::i#4 main::j#2 ] + [3] (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@10/(byte~) main::j#3 ) [ main::i#4 main::j#2 ] [4] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 [ main::i#4 main::j#2 ] [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] - [6] if((byte) main::j#1!=(byte) 101) goto main::@10 [ main::i#4 main::j#1 ] + [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@10 [ main::i#4 main::j#1 ] to:main::@5 main::@5: scope:[main] from main::@2 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] - [8] if((byte) main::i#1!=(byte) 101) goto main::@9 [ main::i#1 ] + [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@9 [ main::i#1 ] to:main::@3 main::@3: scope:[main] from main::@11 main::@5 - [9] (byte) main::k#4 ← phi( main::@5/(byte) 0 main::@11/(byte~) main::k#5 ) [ main::k#4 ] + [9] (byte) main::k#4 ← phi( main::@5/(byte/signed byte/word/signed word) 0 main::@11/(byte~) main::k#5 ) [ main::k#4 ] to:main::@4 main::@4: scope:[main] from main::@12 main::@3 - [10] (byte) main::l#2 ← phi( main::@3/(byte) 0 main::@12/(byte~) main::l#3 ) [ main::k#4 main::l#2 ] + [10] (byte) main::l#2 ← phi( main::@3/(byte/signed byte/word/signed word) 0 main::@12/(byte~) main::l#3 ) [ main::k#4 main::l#2 ] asm { eor#$55tax } [12] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] - [14] if((byte) main::l#1!=(byte) 101) goto main::@12 [ main::k#4 main::l#1 ] + [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@12 [ main::k#4 main::l#1 ] to:main::@7 main::@7: scope:[main] from main::@4 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] - [16] if((byte) main::k#1!=(byte) 101) goto main::@11 [ main::k#1 ] + [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@11 [ main::k#1 ] to:main::@return main::@return: scope:[main] from main::@7 [17] return [ ] @@ -1113,31 +1113,31 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#4 ← phi( main/(byte) 0 main::@5/(byte) main::i#1 ) [ main::i#4 ] + [2] (byte) main::i#4 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::i#1 ) [ main::i#4 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - [3] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::j#1 ) [ main::i#4 main::j#2 ] + [3] (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#1 ) [ main::i#4 main::j#2 ] [4] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 [ main::i#4 main::j#2 ] [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] - [6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] + [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] to:main::@5 main::@5: scope:[main] from main::@2 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] - [8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] + [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] to:main::@3 main::@3: scope:[main] from main::@5 main::@7 - [9] (byte) main::k#4 ← phi( main::@5/(byte) 0 main::@7/(byte) main::k#1 ) [ main::k#4 ] + [9] (byte) main::k#4 ← phi( main::@5/(byte/signed byte/word/signed word) 0 main::@7/(byte) main::k#1 ) [ main::k#4 ] to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - [10] (byte) main::l#2 ← phi( main::@3/(byte) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] + [10] (byte) main::l#2 ← phi( main::@3/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] asm { eor#$55tax } [12] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] - [14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] + [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] to:main::@7 main::@7: scope:[main] from main::@4 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] - [16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] + [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] to:main::@return main::@return: scope:[main] from main::@7 [17] return [ ] @@ -1154,31 +1154,31 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#4 ← phi( main/(byte) 0 main::@5/(byte) main::i#1 ) [ main::i#4 ] ( main:0 [ main::i#4 ] ) + [2] (byte) main::i#4 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::i#1 ) [ main::i#4 ] ( main:0 [ main::i#4 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - [3] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::j#1 ) [ main::i#4 main::j#2 ] ( main:0 [ main::i#4 main::j#2 ] ) + [3] (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#1 ) [ main::i#4 main::j#2 ] ( main:0 [ main::i#4 main::j#2 ] ) [4] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 [ main::i#4 main::j#2 ] ( main:0 [ main::i#4 main::j#2 ] ) [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) - [6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) + [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) to:main::@5 main::@5: scope:[main] from main::@2 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@3 main::@3: scope:[main] from main::@5 main::@7 - [9] (byte) main::k#4 ← phi( main::@5/(byte) 0 main::@7/(byte) main::k#1 ) [ main::k#4 ] ( main:0 [ main::k#4 ] ) + [9] (byte) main::k#4 ← phi( main::@5/(byte/signed byte/word/signed word) 0 main::@7/(byte) main::k#1 ) [ main::k#4 ] ( main:0 [ main::k#4 ] ) to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - [10] (byte) main::l#2 ← phi( main::@3/(byte) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] ( main:0 [ main::k#4 main::l#2 ] ) + [10] (byte) main::l#2 ← phi( main::@3/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] ( main:0 [ main::k#4 main::l#2 ] ) asm { eor#$55tax } [12] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:0 [ main::k#4 main::l#2 ] ) [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) - [14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) + [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) to:main::@7 main::@7: scope:[main] from main::@4 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] ) - [16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) + [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) to:main::@return main::@return: scope:[main] from main::@7 [17] return [ ] ( main:0 [ ] ) @@ -1187,15 +1187,15 @@ main::@return: scope:[main] from main::@7 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@5 dominated by @1 @begin main::@2 main::@1 main::@5 main -main::@3 dominated by @1 @begin main::@2 main::@1 main::@3 main::@5 main -main::@4 dominated by @1 @begin main::@2 main::@1 main::@4 main::@3 main::@5 main -main::@7 dominated by main::@7 @1 @begin main::@2 main::@1 main::@4 main::@3 main::@5 main -main::@return dominated by main::@7 @1 main::@return @begin main::@2 main::@1 main::@4 main::@3 main::@5 main +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@5 dominated by @1 @begin main::@1 main::@2 main main::@5 +main::@3 dominated by @1 @begin main::@1 main::@2 main main::@5 main::@3 +main::@4 dominated by @1 @begin main::@1 main::@2 main main::@5 main::@3 main::@4 +main::@7 dominated by @1 main::@7 @begin main::@1 main::@2 main main::@5 main::@3 main::@4 +main::@return dominated by main::@return @1 main::@7 @begin main::@1 main::@2 main main::@5 main::@3 main::@4 Found back edge: Loop head: main::@2 tails: main::@2 blocks: null Found back edge: Loop head: main::@1 tails: main::@5 blocks: null @@ -1281,7 +1281,7 @@ main: { .label k = 4 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#4 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -1293,7 +1293,7 @@ main: { b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG14 [3] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #0 sta j jmp b2 @@ -1309,7 +1309,7 @@ main: { sta SCREEN,x //SEG19 [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- zpby1=_inc_zpby1 inc j - //SEG20 [6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG20 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- zpby1_neq_coby1_then_la1 lda j cmp #$65 bne b2_from_b2 @@ -1318,13 +1318,13 @@ main: { b5: //SEG22 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG23 [8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG23 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$65 bne b1_from_b5 //SEG24 [9] phi from main::@5 to main::@3 [phi:main::@5->main::@3] b3_from_b5: - //SEG25 [9] phi (byte) main::k#4 = (byte) 0 [phi:main::@5->main::@3#0] -- zpby1=coby1 + //SEG25 [9] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- zpby1=coby1 lda #0 sta k jmp b3 @@ -1336,7 +1336,7 @@ main: { b3: //SEG29 [10] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: - //SEG30 [10] phi (byte) main::l#2 = (byte) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 + //SEG30 [10] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 lda #0 sta l jmp b4 @@ -1355,7 +1355,7 @@ main: { sta SCREEN,x //SEG36 [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1=_inc_zpby1 inc l - //SEG37 [14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG37 [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 lda l cmp #$65 bne b4_from_b4 @@ -1364,7 +1364,7 @@ main: { b7: //SEG39 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- zpby1=_inc_zpby1 inc k - //SEG40 [16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG40 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- zpby1_neq_coby1_then_la1 lda k cmp #$65 bne b3_from_b7 @@ -1430,7 +1430,7 @@ main: { .label l = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#4 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] @@ -1440,7 +1440,7 @@ main: { b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG14 [3] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 jmp b2 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -1453,19 +1453,19 @@ main: { //SEG19 [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby=_inc_aby clc adc #1 - //SEG20 [6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 + //SEG20 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 cmp #$65 bne b2_from_b2 //SEG21 main::@5 b5: //SEG22 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1_from_b5 //SEG24 [9] phi from main::@5 to main::@3 [phi:main::@5->main::@3] b3_from_b5: - //SEG25 [9] phi (byte) main::k#4 = (byte) 0 [phi:main::@5->main::@3#0] -- yby=coby1 + //SEG25 [9] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- yby=coby1 ldy #0 jmp b3 //SEG26 [9] phi from main::@7 to main::@3 [phi:main::@7->main::@3] @@ -1475,7 +1475,7 @@ main: { b3: //SEG29 [10] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: - //SEG30 [10] phi (byte) main::l#2 = (byte) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 + //SEG30 [10] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 lda #0 sta l jmp b4 @@ -1492,7 +1492,7 @@ main: { sta SCREEN,y //SEG36 [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1=_inc_zpby1 inc l - //SEG37 [14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG37 [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 lda l cmp #$65 bne b4_from_b4 @@ -1500,7 +1500,7 @@ main: { b7: //SEG39 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby=_inc_yby iny - //SEG40 [16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 + //SEG40 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 cpy #$65 bne b3_from_b7 //SEG41 main::@return @@ -1542,7 +1542,7 @@ main: { .label l = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#4 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] @@ -1550,7 +1550,7 @@ main: { //SEG12 main::@1 b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG14 [3] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 jmp b2 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -1562,19 +1562,19 @@ main: { //SEG19 [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby=_inc_aby clc adc #1 - //SEG20 [6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 + //SEG20 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 cmp #$65 bne b2 //SEG21 main::@5 b5: //SEG22 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1 //SEG24 [9] phi from main::@5 to main::@3 [phi:main::@5->main::@3] b3_from_b5: - //SEG25 [9] phi (byte) main::k#4 = (byte) 0 [phi:main::@5->main::@3#0] -- yby=coby1 + //SEG25 [9] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- yby=coby1 ldy #0 jmp b3 //SEG26 [9] phi from main::@7 to main::@3 [phi:main::@7->main::@3] @@ -1582,7 +1582,7 @@ main: { //SEG28 main::@3 b3: //SEG29 [10] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG30 [10] phi (byte) main::l#2 = (byte) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 + //SEG30 [10] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 lda #0 sta l jmp b4 @@ -1598,7 +1598,7 @@ main: { sta SCREEN,y //SEG36 [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1=_inc_zpby1 inc l - //SEG37 [14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG37 [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 lda l cmp #$65 bne b4 @@ -1606,7 +1606,7 @@ main: { b7: //SEG39 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby=_inc_yby iny - //SEG40 [16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 + //SEG40 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 cpy #$65 bne b3 //SEG41 main::@return @@ -1640,7 +1640,7 @@ ASSEMBLER main: { .label l = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#4 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] @@ -1648,7 +1648,7 @@ main: { //SEG12 main::@1 b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG14 [3] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 jmp b2 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -1660,17 +1660,17 @@ main: { //SEG19 [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby=_inc_aby clc adc #1 - //SEG20 [6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 + //SEG20 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 cmp #$65 bne b2 //SEG21 main::@5 //SEG22 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1 //SEG24 [9] phi from main::@5 to main::@3 [phi:main::@5->main::@3] - //SEG25 [9] phi (byte) main::k#4 = (byte) 0 [phi:main::@5->main::@3#0] -- yby=coby1 + //SEG25 [9] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- yby=coby1 ldy #0 jmp b3 //SEG26 [9] phi from main::@7 to main::@3 [phi:main::@7->main::@3] @@ -1678,7 +1678,7 @@ main: { //SEG28 main::@3 b3: //SEG29 [10] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG30 [10] phi (byte) main::l#2 = (byte) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 + //SEG30 [10] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 lda #0 sta l jmp b4 @@ -1694,14 +1694,14 @@ main: { sta SCREEN,y //SEG36 [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1=_inc_zpby1 inc l - //SEG37 [14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG37 [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 lda l cmp #$65 bne b4 //SEG38 main::@7 //SEG39 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby=_inc_yby iny - //SEG40 [16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 + //SEG40 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 cpy #$65 bne b3 //SEG41 main::@return @@ -1731,14 +1731,14 @@ ASSEMBLER main: { .label l = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#4 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] //SEG11 [2] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG14 [3] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG16 [3] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy @@ -1749,24 +1749,24 @@ main: { //SEG19 [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby=_inc_aby clc adc #1 - //SEG20 [6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 + //SEG20 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 cmp #$65 bne b2 //SEG21 main::@5 //SEG22 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1 //SEG24 [9] phi from main::@5 to main::@3 [phi:main::@5->main::@3] - //SEG25 [9] phi (byte) main::k#4 = (byte) 0 [phi:main::@5->main::@3#0] -- yby=coby1 + //SEG25 [9] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- yby=coby1 ldy #0 //SEG26 [9] phi from main::@7 to main::@3 [phi:main::@7->main::@3] //SEG27 [9] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy //SEG28 main::@3 b3: //SEG29 [10] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG30 [10] phi (byte) main::l#2 = (byte) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 + //SEG30 [10] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 lda #0 sta l //SEG31 [10] phi from main::@4 to main::@4 [phi:main::@4->main::@4] @@ -1781,14 +1781,14 @@ main: { sta SCREEN,y //SEG36 [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1=_inc_zpby1 inc l - //SEG37 [14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG37 [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 lda l cmp #$65 bne b4 //SEG38 main::@7 //SEG39 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby=_inc_yby iny - //SEG40 [16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 + //SEG40 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 cpy #$65 bne b3 //SEG41 main::@return @@ -1801,7 +1801,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -1845,14 +1845,14 @@ FINAL CODE main: { .label l = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#4 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] //SEG11 [2] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG14 [3] phi (byte) main::j#2 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG16 [3] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy @@ -1863,24 +1863,24 @@ main: { //SEG19 [5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby=_inc_aby clc adc #1 - //SEG20 [6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 + //SEG20 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] ) -- aby_neq_coby1_then_la1 cmp #$65 bne b2 //SEG21 main::@5 //SEG22 [7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1 //SEG24 [9] phi from main::@5 to main::@3 [phi:main::@5->main::@3] - //SEG25 [9] phi (byte) main::k#4 = (byte) 0 [phi:main::@5->main::@3#0] -- yby=coby1 + //SEG25 [9] phi (byte) main::k#4 = (byte/signed byte/word/signed word) 0 [phi:main::@5->main::@3#0] -- yby=coby1 ldy #0 //SEG26 [9] phi from main::@7 to main::@3 [phi:main::@7->main::@3] //SEG27 [9] phi (byte) main::k#4 = (byte) main::k#1 [phi:main::@7->main::@3#0] -- register_copy //SEG28 main::@3 b3: //SEG29 [10] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG30 [10] phi (byte) main::l#2 = (byte) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 + //SEG30 [10] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@4#0] -- zpby1=coby1 lda #0 sta l //SEG31 [10] phi from main::@4 to main::@4 [phi:main::@4->main::@4] @@ -1895,14 +1895,14 @@ main: { sta SCREEN,y //SEG36 [13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1=_inc_zpby1 inc l - //SEG37 [14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG37 [14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] ) -- zpby1_neq_coby1_then_la1 lda l cmp #$65 bne b4 //SEG38 main::@7 //SEG39 [15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby=_inc_yby iny - //SEG40 [16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 + //SEG40 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- yby_neq_coby1_then_la1 cpy #$65 bne b3 //SEG41 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.sym b/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.sym index edf1055ec..c7665caf1 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/asm-clobber.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg index afbb374bf..42b817515 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg @@ -5,10 +5,10 @@ to:@end @end: scope:[] from @10 main: scope:[main] from @10 - [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) - [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) - [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) - [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) + [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) + [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) [5] call init_screen param-assignment [ ] ( main:0 [ ] ) to:main::@3 main::@3: scope:[main] from main @@ -27,11 +27,11 @@ lines: scope:[lines] from main::@1 [10] phi() [ ] ( main:0::lines:7 [ ] ) to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 - [11] (byte) lines::l#2 ← phi( lines/(byte) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] ( main:0::lines:7 [ lines::l#2 ] ) + [11] (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] ( main:0::lines:7 [ lines::l#2 ] ) [12] (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 ] ( main:0::lines:7 [ lines::l#2 lines::$0 ] ) - [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) + [13] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) [14] (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 ] ) - [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) + [15] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) [16] (byte) line::x0#0 ← (byte~) lines::$0 [ lines::l#2 lines::$2 lines::$3 lines::$5 line::x0#0 ] ( main:0::lines:7 [ lines::l#2 lines::$2 lines::$3 lines::$5 line::x0#0 ] ) [17] (byte) line::x1#0 ← (byte~) lines::$2 [ lines::l#2 lines::$3 lines::$5 line::x0#0 line::x1#0 ] ( main:0::lines:7 [ lines::l#2 lines::$3 lines::$5 line::x0#0 line::x1#0 ] ) [18] (byte) line::y0#0 ← (byte~) lines::$3 [ lines::l#2 lines::$5 line::x0#0 line::x1#0 line::y0#0 ] ( main:0::lines:7 [ lines::l#2 lines::$5 line::x0#0 line::x1#0 line::y0#0 ] ) @@ -145,7 +145,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 [86] (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ) [86] (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ) [86] (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] main:0::lines:7::line:20::line_ydxi:85 [ 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::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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::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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 [88] (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) @@ -156,18 +156,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 [91] call plot param-assignment [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 - [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) + [92] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [94] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 - [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) + [95] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 [97] (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [97] (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) + [98] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [99] if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 @@ -177,14 +177,14 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 [101] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [101] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) - [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) + [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) - [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) + [107] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) - [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) - [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) + [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) + [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) @@ -198,7 +198,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 [115] (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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) [115] (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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) [115] (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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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::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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 [117] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) @@ -209,18 +209,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 [120] 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 - [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) + [121] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [123] 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 - [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) + [124] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 [126] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [126] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) + [127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [128] 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 @@ -232,7 +232,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 [130] (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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) [130] (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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) [130] (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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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::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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 [132] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) @@ -243,18 +243,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 [135] 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 - [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) + [136] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [138] 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 - [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) + [139] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 [141] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [141] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) + [142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [143] 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 @@ -266,7 +266,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 [145] (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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) [145] (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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) [145] (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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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::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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 [147] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) @@ -277,18 +277,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 [150] 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 - [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) + [151] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [153] 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 - [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) + [154] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 [156] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [156] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) + [157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [158] 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 @@ -298,39 +298,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 [160] phi() [ ] ( main:0::init_plot_tables:6 [ ] ) to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [161] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [161] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) + [161] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [161] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) [163] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) [164] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) - [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) + [166] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [168] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) + [168] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) - [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [170] 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:0::init_plot_tables:6 [ 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 - [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) + [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [171] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) [173] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) [174] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) [175] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) [176] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) [177] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) - [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) + [179] 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:0::init_plot_tables:6 [ 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 - [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) + [180] (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:0::init_plot_tables:6 [ 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 [181] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) - [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [183] 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:0::init_plot_tables:6 [ 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 [184] return [ ] ( main:0::init_plot_tables:6 [ ] ) @@ -342,15 +342,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 [186] (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:0::init_screen:5 [ init_screen::b#2 ] ) - [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) + [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) [188] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) - [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) + [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 [190] (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:0::init_screen:5 [ init_screen::c#2 ] ) - [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) + [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) [192] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) - [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) + [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 [194] return [ ] ( main:0::init_screen:5 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log index 9f2f2e9ba..cb6a46149 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log @@ -140,7 +140,7 @@ void line_ydxd(byte y, byte x, byte y1, byte yd, byte xd) { void plot(byte x, byte y) { byte* plotter_x = 0; - byte* plotter_y = 0; + word plotter_y = 0; >plotter_x = plot_xhi[x]; // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; plotter_y = plot_yhi[y]; @@ -193,32 +193,32 @@ PROGRAM (byte*) SCROLL ← (word) 53270 (byte*) D018 ← (word) 53272 (byte*) D011 ← (word) 53265 - (byte) RST8 ← (byte) 128 - (byte) ECM ← (byte) 64 - (byte) BMM ← (byte) 32 - (byte) DEN ← (byte) 16 - (byte) RSEL ← (byte) 8 + (byte) RST8 ← (byte/word/signed word) 128 + (byte) ECM ← (byte/signed byte/word/signed word) 64 + (byte) BMM ← (byte/signed byte/word/signed word) 32 + (byte) DEN ← (byte/signed byte/word/signed word) 16 + (byte) RSEL ← (byte/signed byte/word/signed word) 8 (byte*) D016 ← (word) 53270 - (byte) MCM ← (byte) 16 - (byte) CSEL ← (byte) 8 - (byte*) SCREEN ← (word) 1024 - (byte*) BITMAP ← (word) 8192 - (byte[]) plot_xlo ← (word) 4096 - (byte[]) plot_xhi ← (word) 4352 - (byte[]) plot_ylo ← (word) 4608 - (byte[]) plot_yhi ← (word) 4864 - (byte[]) plot_bit ← (word) 5120 - (byte[]) lines_x ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt ← (byte) 8 + (byte) MCM ← (byte/signed byte/word/signed word) 16 + (byte) CSEL ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) BITMAP ← (word/signed word) 8192 + (byte[]) plot_xlo ← (word/signed word) 4096 + (byte[]) plot_xhi ← (word/signed word) 4352 + (byte[]) plot_ylo ← (word/signed word) 4608 + (byte[]) plot_yhi ← (word/signed word) 4864 + (byte[]) plot_bit ← (word/signed word) 5120 + (byte[]) lines_x ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt ← (byte/signed byte/word/signed word) 8 proc (void()) main() - *((byte*) BGCOL) ← (byte) 0 - *((byte*) FGCOL) ← (byte) 0 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM | (byte) DEN (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011) ← (byte~) main::$2 - *((byte*) D018) ← (byte) 24 + *((byte*) D018) ← (byte/signed byte/word/signed word) 24 (void~) main::$3 ← call init_screen (void~) main::$4 ← call init_plot_tables main::@1: @@ -228,13 +228,13 @@ main::@return: return endproc // main() proc (void()) lines() - (byte) lines::l ← (byte) 0 + (byte) lines::l ← (byte/signed byte/word/signed word) 0 lines::@1: (byte~) lines::$0 ← (byte[]) lines_x *idx (byte) lines::l - (byte~) lines::$1 ← (byte) lines::l + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y *idx (byte) lines::l - (byte~) lines::$4 ← (byte) lines::l + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y *idx (byte~) lines::$4 (void~) lines::$6 ← call line (byte~) lines::$0 (byte~) lines::$2 (byte~) lines::$3 (byte~) lines::$5 (byte) lines::l ← ++ (byte) lines::l @@ -310,110 +310,110 @@ line::@return: return endproc // line() proc (void()) line_xdyi((byte) line_xdyi::x , (byte) line_xdyi::y , (byte) line_xdyi::x1 , (byte) line_xdyi::xd , (byte) line_xdyi::yd) - (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd >> (byte) 1 + (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd >> (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e ← (byte~) line_xdyi::$0 line_xdyi::@1: (void~) line_xdyi::$1 ← call plot (byte) line_xdyi::x (byte) line_xdyi::y - (byte~) line_xdyi::$2 ← (byte) line_xdyi::x + (byte) 1 + (byte~) line_xdyi::$2 ← (byte) line_xdyi::x + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::x ← (byte~) line_xdyi::$2 (byte~) line_xdyi::$3 ← (byte) line_xdyi::e + (byte) line_xdyi::yd (byte) line_xdyi::e ← (byte~) line_xdyi::$3 (boolean~) line_xdyi::$4 ← (byte) line_xdyi::xd < (byte) line_xdyi::e (boolean~) line_xdyi::$5 ← ! (boolean~) line_xdyi::$4 if((boolean~) line_xdyi::$5) goto line_xdyi::@2 - (byte~) line_xdyi::$6 ← (byte) line_xdyi::y + (byte) 1 + (byte~) line_xdyi::$6 ← (byte) line_xdyi::y + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::y ← (byte~) line_xdyi::$6 (byte~) line_xdyi::$7 ← (byte) line_xdyi::e - (byte) line_xdyi::xd (byte) line_xdyi::e ← (byte~) line_xdyi::$7 line_xdyi::@2: - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 line_xdyi::@return: return endproc // line_xdyi() proc (void()) line_xdyd((byte) line_xdyd::x , (byte) line_xdyd::y , (byte) line_xdyd::x1 , (byte) line_xdyd::xd , (byte) line_xdyd::yd) - (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd >> (byte) 1 + (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd >> (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e ← (byte~) line_xdyd::$0 line_xdyd::@1: (void~) line_xdyd::$1 ← call plot (byte) line_xdyd::x (byte) line_xdyd::y - (byte~) line_xdyd::$2 ← (byte) line_xdyd::x + (byte) 1 + (byte~) line_xdyd::$2 ← (byte) line_xdyd::x + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::x ← (byte~) line_xdyd::$2 (byte~) line_xdyd::$3 ← (byte) line_xdyd::e + (byte) line_xdyd::yd (byte) line_xdyd::e ← (byte~) line_xdyd::$3 (boolean~) line_xdyd::$4 ← (byte) line_xdyd::xd < (byte) line_xdyd::e (boolean~) line_xdyd::$5 ← ! (boolean~) line_xdyd::$4 if((boolean~) line_xdyd::$5) goto line_xdyd::@2 - (byte~) line_xdyd::$6 ← (byte) line_xdyd::y - (byte) 1 + (byte~) line_xdyd::$6 ← (byte) line_xdyd::y - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::y ← (byte~) line_xdyd::$6 (byte~) line_xdyd::$7 ← (byte) line_xdyd::e - (byte) line_xdyd::xd (byte) line_xdyd::e ← (byte~) line_xdyd::$7 line_xdyd::@2: - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 line_xdyd::@return: return endproc // line_xdyd() proc (void()) line_ydxi((byte) line_ydxi::y , (byte) line_ydxi::x , (byte) line_ydxi::y1 , (byte) line_ydxi::yd , (byte) line_ydxi::xd) - (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd >> (byte) 1 + (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd >> (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e ← (byte~) line_ydxi::$0 line_ydxi::@1: (void~) line_ydxi::$1 ← call plot (byte) line_ydxi::x (byte) line_ydxi::y - (byte~) line_ydxi::$2 ← (byte) line_ydxi::y + (byte) 1 + (byte~) line_ydxi::$2 ← (byte) line_ydxi::y + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::y ← (byte~) line_ydxi::$2 (byte~) line_ydxi::$3 ← (byte) line_ydxi::e + (byte) line_ydxi::xd (byte) line_ydxi::e ← (byte~) line_ydxi::$3 (boolean~) line_ydxi::$4 ← (byte) line_ydxi::yd < (byte) line_ydxi::e (boolean~) line_ydxi::$5 ← ! (boolean~) line_ydxi::$4 if((boolean~) line_ydxi::$5) goto line_ydxi::@2 - (byte~) line_ydxi::$6 ← (byte) line_ydxi::x + (byte) 1 + (byte~) line_ydxi::$6 ← (byte) line_ydxi::x + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::x ← (byte~) line_ydxi::$6 (byte~) line_ydxi::$7 ← (byte) line_ydxi::e - (byte) line_ydxi::yd (byte) line_ydxi::e ← (byte~) line_ydxi::$7 line_ydxi::@2: - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 line_ydxi::@return: return endproc // line_ydxi() proc (void()) line_ydxd((byte) line_ydxd::y , (byte) line_ydxd::x , (byte) line_ydxd::y1 , (byte) line_ydxd::yd , (byte) line_ydxd::xd) - (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd >> (byte) 1 + (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd >> (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e ← (byte~) line_ydxd::$0 line_ydxd::@1: (void~) line_ydxd::$1 ← call plot (byte) line_ydxd::x (byte) line_ydxd::y - (byte~) line_ydxd::$2 ← (byte) line_ydxd::y + (byte) 1 + (byte~) line_ydxd::$2 ← (byte) line_ydxd::y + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::y ← (byte~) line_ydxd::$2 (byte~) line_ydxd::$3 ← (byte) line_ydxd::e + (byte) line_ydxd::xd (byte) line_ydxd::e ← (byte~) line_ydxd::$3 (boolean~) line_ydxd::$4 ← (byte) line_ydxd::yd < (byte) line_ydxd::e (boolean~) line_ydxd::$5 ← ! (boolean~) line_ydxd::$4 if((boolean~) line_ydxd::$5) goto line_ydxd::@2 - (byte~) line_ydxd::$6 ← (byte) line_ydxd::x - (byte) 1 + (byte~) line_ydxd::$6 ← (byte) line_ydxd::x - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::x ← (byte~) line_ydxd::$6 (byte~) line_ydxd::$7 ← (byte) line_ydxd::e - (byte) line_ydxd::yd (byte) line_ydxd::e ← (byte~) line_ydxd::$7 line_ydxd::@2: - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 line_ydxd::@return: return endproc // line_ydxd() proc (void()) plot((byte) plot::x , (byte) plot::y) - (byte*) plot::plotter_x ← (byte) 0 - (byte*) plot::plotter_y ← (byte) 0 + (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y hi= (byte~) plot::$2 + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x + (byte*) plot::plotter_y - (byte*) plot::plotter ← (byte~) plot::$4 + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 *((byte*) plot::plotter) ← (byte~) plot::$6 @@ -421,42 +421,42 @@ plot::@return: return endproc // plot() proc (void()) init_plot_tables() - (byte) init_plot_tables::bits ← (byte) 128 - (byte) init_plot_tables::x ← (byte) 0 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 + (byte) init_plot_tables::x ← (byte/signed byte/word/signed word) 0 init_plot_tables::@1: - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word) 248 *((byte[]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP *((byte[]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 - (byte) init_plot_tables::bits ← (byte) 128 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 init_plot_tables::@2: (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 - (byte*) init_plot_tables::yoffs ← (byte) 0 - (byte) init_plot_tables::y ← (byte) 0 + (byte*) init_plot_tables::yoffs ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y ← (byte/signed byte/word/signed word) 0 init_plot_tables::@3: - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs *((byte[]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word/signed word) 320 (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$13 init_plot_tables::@4: (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 init_plot_tables::@return: return @@ -464,16 +464,16 @@ endproc // init_plot_tables() proc (void()) init_screen() (byte*) init_screen::b ← (byte*) BITMAP init_screen::@1: - *((byte*) init_screen::b) ← (byte) 0 + *((byte*) init_screen::b) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b ← ++ (byte*) init_screen::b - (byte*~) init_screen::$0 ← (byte*) BITMAP + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 (byte*) init_screen::c ← (byte*) SCREEN init_screen::@2: - *((byte*) init_screen::c) ← (byte) 20 + *((byte*) init_screen::c) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c ← ++ (byte*) init_screen::c - (byte*~) init_screen::$2 ← (byte*) SCREEN + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 init_screen::@return: @@ -692,13 +692,13 @@ SYMBOLS (byte~) plot::$1 (byte~) plot::$2 (byte~) plot::$3 -(byte~) plot::$4 +(byte*~) plot::$4 (byte~) plot::$5 (byte~) plot::$6 (label) plot::@return (byte*) plot::plotter (byte*) plot::plotter_x -(byte*) plot::plotter_y +(word) plot::plotter_y (byte) plot::x (byte) plot::y (byte[]) plot_bit @@ -715,33 +715,33 @@ INITIAL CONTROL FLOW GRAPH (byte*) SCROLL ← (word) 53270 (byte*) D018 ← (word) 53272 (byte*) D011 ← (word) 53265 - (byte) RST8 ← (byte) 128 - (byte) ECM ← (byte) 64 - (byte) BMM ← (byte) 32 - (byte) DEN ← (byte) 16 - (byte) RSEL ← (byte) 8 + (byte) RST8 ← (byte/word/signed word) 128 + (byte) ECM ← (byte/signed byte/word/signed word) 64 + (byte) BMM ← (byte/signed byte/word/signed word) 32 + (byte) DEN ← (byte/signed byte/word/signed word) 16 + (byte) RSEL ← (byte/signed byte/word/signed word) 8 (byte*) D016 ← (word) 53270 - (byte) MCM ← (byte) 16 - (byte) CSEL ← (byte) 8 - (byte*) SCREEN ← (word) 1024 - (byte*) BITMAP ← (word) 8192 - (byte[]) plot_xlo ← (word) 4096 - (byte[]) plot_xhi ← (word) 4352 - (byte[]) plot_ylo ← (word) 4608 - (byte[]) plot_yhi ← (word) 4864 - (byte[]) plot_bit ← (word) 5120 - (byte[]) lines_x ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt ← (byte) 8 + (byte) MCM ← (byte/signed byte/word/signed word) 16 + (byte) CSEL ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) BITMAP ← (word/signed word) 8192 + (byte[]) plot_xlo ← (word/signed word) 4096 + (byte[]) plot_xhi ← (word/signed word) 4352 + (byte[]) plot_ylo ← (word/signed word) 4608 + (byte[]) plot_yhi ← (word/signed word) 4864 + (byte[]) plot_bit ← (word/signed word) 5120 + (byte[]) lines_x ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt ← (byte/signed byte/word/signed word) 8 to:@1 main: scope:[main] from - *((byte*) BGCOL) ← (byte) 0 - *((byte*) FGCOL) ← (byte) 0 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM | (byte) DEN (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011) ← (byte~) main::$2 - *((byte*) D018) ← (byte) 24 + *((byte*) D018) ← (byte/signed byte/word/signed word) 24 (void~) main::$3 ← call init_screen (void~) main::$4 ← call init_plot_tables to:main::@1 @@ -757,14 +757,14 @@ main::@return: scope:[main] from main::@2 @1: scope:[] from @begin to:@2 lines: scope:[lines] from - (byte) lines::l ← (byte) 0 + (byte) lines::l ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@1 (byte~) lines::$0 ← (byte[]) lines_x *idx (byte) lines::l - (byte~) lines::$1 ← (byte) lines::l + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y *idx (byte) lines::l - (byte~) lines::$4 ← (byte) lines::l + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y *idx (byte~) lines::$4 (void~) lines::$6 ← call line (byte~) lines::$0 (byte~) lines::$2 (byte~) lines::$3 (byte~) lines::$5 (byte) lines::l ← ++ (byte) lines::l @@ -883,12 +883,12 @@ line::@return: scope:[line] from line::@8 @3: scope:[] from @2 to:@4 line_xdyi: scope:[line_xdyi] from - (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd >> (byte) 1 + (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd >> (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e ← (byte~) line_xdyi::$0 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (void~) line_xdyi::$1 ← call plot (byte) line_xdyi::x (byte) line_xdyi::y - (byte~) line_xdyi::$2 ← (byte) line_xdyi::x + (byte) 1 + (byte~) line_xdyi::$2 ← (byte) line_xdyi::x + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::x ← (byte~) line_xdyi::$2 (byte~) line_xdyi::$3 ← (byte) line_xdyi::e + (byte) line_xdyi::yd (byte) line_xdyi::e ← (byte~) line_xdyi::$3 @@ -897,12 +897,12 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 if((boolean~) line_xdyi::$5) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@1 line_xdyi::@3 - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@4 line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@1 - (byte~) line_xdyi::$6 ← (byte) line_xdyi::y + (byte) 1 + (byte~) line_xdyi::$6 ← (byte) line_xdyi::y + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::y ← (byte~) line_xdyi::$6 (byte~) line_xdyi::$7 ← (byte) line_xdyi::e - (byte) line_xdyi::xd (byte) line_xdyi::e ← (byte~) line_xdyi::$7 @@ -915,12 +915,12 @@ line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@4 @4: scope:[] from @3 to:@5 line_xdyd: scope:[line_xdyd] from - (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd >> (byte) 1 + (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd >> (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e ← (byte~) line_xdyd::$0 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (void~) line_xdyd::$1 ← call plot (byte) line_xdyd::x (byte) line_xdyd::y - (byte~) line_xdyd::$2 ← (byte) line_xdyd::x + (byte) 1 + (byte~) line_xdyd::$2 ← (byte) line_xdyd::x + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::x ← (byte~) line_xdyd::$2 (byte~) line_xdyd::$3 ← (byte) line_xdyd::e + (byte) line_xdyd::yd (byte) line_xdyd::e ← (byte~) line_xdyd::$3 @@ -929,12 +929,12 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 if((boolean~) line_xdyd::$5) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@1 line_xdyd::@3 - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@4 line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@1 - (byte~) line_xdyd::$6 ← (byte) line_xdyd::y - (byte) 1 + (byte~) line_xdyd::$6 ← (byte) line_xdyd::y - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::y ← (byte~) line_xdyd::$6 (byte~) line_xdyd::$7 ← (byte) line_xdyd::e - (byte) line_xdyd::xd (byte) line_xdyd::e ← (byte~) line_xdyd::$7 @@ -947,12 +947,12 @@ line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@4 @5: scope:[] from @4 to:@6 line_ydxi: scope:[line_ydxi] from - (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd >> (byte) 1 + (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd >> (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e ← (byte~) line_ydxi::$0 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (void~) line_ydxi::$1 ← call plot (byte) line_ydxi::x (byte) line_ydxi::y - (byte~) line_ydxi::$2 ← (byte) line_ydxi::y + (byte) 1 + (byte~) line_ydxi::$2 ← (byte) line_ydxi::y + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::y ← (byte~) line_ydxi::$2 (byte~) line_ydxi::$3 ← (byte) line_ydxi::e + (byte) line_ydxi::xd (byte) line_ydxi::e ← (byte~) line_ydxi::$3 @@ -961,12 +961,12 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 if((boolean~) line_ydxi::$5) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@1 line_ydxi::@3 - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@4 line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@1 - (byte~) line_ydxi::$6 ← (byte) line_ydxi::x + (byte) 1 + (byte~) line_ydxi::$6 ← (byte) line_ydxi::x + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::x ← (byte~) line_ydxi::$6 (byte~) line_ydxi::$7 ← (byte) line_ydxi::e - (byte) line_ydxi::yd (byte) line_ydxi::e ← (byte~) line_ydxi::$7 @@ -979,12 +979,12 @@ line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@4 @6: scope:[] from @5 to:@7 line_ydxd: scope:[line_ydxd] from - (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd >> (byte) 1 + (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd >> (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e ← (byte~) line_ydxd::$0 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (void~) line_ydxd::$1 ← call plot (byte) line_ydxd::x (byte) line_ydxd::y - (byte~) line_ydxd::$2 ← (byte) line_ydxd::y + (byte) 1 + (byte~) line_ydxd::$2 ← (byte) line_ydxd::y + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::y ← (byte~) line_ydxd::$2 (byte~) line_ydxd::$3 ← (byte) line_ydxd::e + (byte) line_ydxd::xd (byte) line_ydxd::e ← (byte~) line_ydxd::$3 @@ -993,12 +993,12 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 if((boolean~) line_ydxd::$5) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@1 line_ydxd::@3 - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@4 line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@1 - (byte~) line_ydxd::$6 ← (byte) line_ydxd::x - (byte) 1 + (byte~) line_ydxd::$6 ← (byte) line_ydxd::x - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::x ← (byte~) line_ydxd::$6 (byte~) line_ydxd::$7 ← (byte) line_ydxd::e - (byte) line_ydxd::yd (byte) line_ydxd::e ← (byte~) line_ydxd::$7 @@ -1011,18 +1011,18 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@4 @7: scope:[] from @6 to:@8 plot: scope:[plot] from - (byte*) plot::plotter_x ← (byte) 0 - (byte*) plot::plotter_y ← (byte) 0 + (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y hi= (byte~) plot::$2 + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x + (byte*) plot::plotter_y - (byte*) plot::plotter ← (byte~) plot::$4 + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 *((byte*) plot::plotter) ← (byte~) plot::$6 @@ -1033,52 +1033,52 @@ plot::@return: scope:[plot] from plot @8: scope:[] from @7 to:@9 init_plot_tables: scope:[init_plot_tables] from - (byte) init_plot_tables::bits ← (byte) 128 - (byte) init_plot_tables::x ← (byte) 0 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 + (byte) init_plot_tables::x ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word) 248 *((byte[]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP *((byte[]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits ← (byte) 128 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs ← (byte) 0 - (byte) init_plot_tables::y ← (byte) 0 + (byte*) init_plot_tables::yoffs ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs *((byte[]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@8 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word/signed word) 320 (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@8: scope:[init_plot_tables] from init_plot_tables::@4 @@ -1092,9 +1092,9 @@ init_screen: scope:[init_screen] from (byte*) init_screen::b ← (byte*) BITMAP to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - *((byte*) init_screen::b) ← (byte) 0 + *((byte*) init_screen::b) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b ← ++ (byte*) init_screen::b - (byte*~) init_screen::$0 ← (byte*) BITMAP + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -1102,9 +1102,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 (byte*) init_screen::c ← (byte*) SCREEN to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 - *((byte*) init_screen::c) ← (byte) 20 + *((byte*) init_screen::c) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c ← ++ (byte*) init_screen::c - (byte*~) init_screen::$2 ← (byte*) SCREEN + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@4 @@ -1157,33 +1157,33 @@ CONTROL FLOW GRAPH (byte*) SCROLL ← (word) 53270 (byte*) D018 ← (word) 53272 (byte*) D011 ← (word) 53265 - (byte) RST8 ← (byte) 128 - (byte) ECM ← (byte) 64 - (byte) BMM ← (byte) 32 - (byte) DEN ← (byte) 16 - (byte) RSEL ← (byte) 8 + (byte) RST8 ← (byte/word/signed word) 128 + (byte) ECM ← (byte/signed byte/word/signed word) 64 + (byte) BMM ← (byte/signed byte/word/signed word) 32 + (byte) DEN ← (byte/signed byte/word/signed word) 16 + (byte) RSEL ← (byte/signed byte/word/signed word) 8 (byte*) D016 ← (word) 53270 - (byte) MCM ← (byte) 16 - (byte) CSEL ← (byte) 8 - (byte*) SCREEN ← (word) 1024 - (byte*) BITMAP ← (word) 8192 - (byte[]) plot_xlo ← (word) 4096 - (byte[]) plot_xhi ← (word) 4352 - (byte[]) plot_ylo ← (word) 4608 - (byte[]) plot_yhi ← (word) 4864 - (byte[]) plot_bit ← (word) 5120 - (byte[]) lines_x ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt ← (byte) 8 + (byte) MCM ← (byte/signed byte/word/signed word) 16 + (byte) CSEL ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) BITMAP ← (word/signed word) 8192 + (byte[]) plot_xlo ← (word/signed word) 4096 + (byte[]) plot_xhi ← (word/signed word) 4352 + (byte[]) plot_ylo ← (word/signed word) 4608 + (byte[]) plot_yhi ← (word/signed word) 4864 + (byte[]) plot_bit ← (word/signed word) 5120 + (byte[]) lines_x ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from - *((byte*) BGCOL) ← (byte) 0 - *((byte*) FGCOL) ← (byte) 0 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM | (byte) DEN (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011) ← (byte~) main::$2 - *((byte*) D018) ← (byte) 24 + *((byte*) D018) ← (byte/signed byte/word/signed word) 24 (void~) main::$3 ← call init_screen (void~) main::$4 ← call init_plot_tables to:main::@1 @@ -1195,14 +1195,14 @@ main::@return: scope:[main] from main::@1 return to:@return lines: scope:[lines] from - (byte) lines::l ← (byte) 0 + (byte) lines::l ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@1 (byte~) lines::$0 ← (byte[]) lines_x *idx (byte) lines::l - (byte~) lines::$1 ← (byte) lines::l + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y *idx (byte) lines::l - (byte~) lines::$4 ← (byte) lines::l + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y *idx (byte~) lines::$4 (void~) lines::$6 ← call line (byte~) lines::$0 (byte~) lines::$2 (byte~) lines::$3 (byte~) lines::$5 (byte) lines::l ← ++ (byte) lines::l @@ -1287,12 +1287,12 @@ line::@return: scope:[line] from line::@10 line::@13 line::@17 line::@20 line:: return to:@return line_xdyi: scope:[line_xdyi] from - (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd >> (byte) 1 + (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd >> (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e ← (byte~) line_xdyi::$0 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (void~) line_xdyi::$1 ← call plot (byte) line_xdyi::x (byte) line_xdyi::y - (byte~) line_xdyi::$2 ← (byte) line_xdyi::x + (byte) 1 + (byte~) line_xdyi::$2 ← (byte) line_xdyi::x + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::x ← (byte~) line_xdyi::$2 (byte~) line_xdyi::$3 ← (byte) line_xdyi::e + (byte) line_xdyi::yd (byte) line_xdyi::e ← (byte~) line_xdyi::$3 @@ -1301,12 +1301,12 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 if((boolean~) line_xdyi::$5) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@1 line_xdyi::@3 - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@1 - (byte~) line_xdyi::$6 ← (byte) line_xdyi::y + (byte) 1 + (byte~) line_xdyi::$6 ← (byte) line_xdyi::y + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::y ← (byte~) line_xdyi::$6 (byte~) line_xdyi::$7 ← (byte) line_xdyi::e - (byte) line_xdyi::xd (byte) line_xdyi::e ← (byte~) line_xdyi::$7 @@ -1315,12 +1315,12 @@ line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 return to:@return line_xdyd: scope:[line_xdyd] from - (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd >> (byte) 1 + (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd >> (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e ← (byte~) line_xdyd::$0 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (void~) line_xdyd::$1 ← call plot (byte) line_xdyd::x (byte) line_xdyd::y - (byte~) line_xdyd::$2 ← (byte) line_xdyd::x + (byte) 1 + (byte~) line_xdyd::$2 ← (byte) line_xdyd::x + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::x ← (byte~) line_xdyd::$2 (byte~) line_xdyd::$3 ← (byte) line_xdyd::e + (byte) line_xdyd::yd (byte) line_xdyd::e ← (byte~) line_xdyd::$3 @@ -1329,12 +1329,12 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 if((boolean~) line_xdyd::$5) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@1 line_xdyd::@3 - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@1 - (byte~) line_xdyd::$6 ← (byte) line_xdyd::y - (byte) 1 + (byte~) line_xdyd::$6 ← (byte) line_xdyd::y - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::y ← (byte~) line_xdyd::$6 (byte~) line_xdyd::$7 ← (byte) line_xdyd::e - (byte) line_xdyd::xd (byte) line_xdyd::e ← (byte~) line_xdyd::$7 @@ -1343,12 +1343,12 @@ line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 return to:@return line_ydxi: scope:[line_ydxi] from - (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd >> (byte) 1 + (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd >> (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e ← (byte~) line_ydxi::$0 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (void~) line_ydxi::$1 ← call plot (byte) line_ydxi::x (byte) line_ydxi::y - (byte~) line_ydxi::$2 ← (byte) line_ydxi::y + (byte) 1 + (byte~) line_ydxi::$2 ← (byte) line_ydxi::y + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::y ← (byte~) line_ydxi::$2 (byte~) line_ydxi::$3 ← (byte) line_ydxi::e + (byte) line_ydxi::xd (byte) line_ydxi::e ← (byte~) line_ydxi::$3 @@ -1357,12 +1357,12 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 if((boolean~) line_ydxi::$5) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@1 line_ydxi::@3 - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@1 - (byte~) line_ydxi::$6 ← (byte) line_ydxi::x + (byte) 1 + (byte~) line_ydxi::$6 ← (byte) line_ydxi::x + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::x ← (byte~) line_ydxi::$6 (byte~) line_ydxi::$7 ← (byte) line_ydxi::e - (byte) line_ydxi::yd (byte) line_ydxi::e ← (byte~) line_ydxi::$7 @@ -1371,12 +1371,12 @@ line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 return to:@return line_ydxd: scope:[line_ydxd] from - (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd >> (byte) 1 + (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd >> (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e ← (byte~) line_ydxd::$0 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (void~) line_ydxd::$1 ← call plot (byte) line_ydxd::x (byte) line_ydxd::y - (byte~) line_ydxd::$2 ← (byte) line_ydxd::y + (byte) 1 + (byte~) line_ydxd::$2 ← (byte) line_ydxd::y + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::y ← (byte~) line_ydxd::$2 (byte~) line_ydxd::$3 ← (byte) line_ydxd::e + (byte) line_ydxd::xd (byte) line_ydxd::e ← (byte~) line_ydxd::$3 @@ -1385,12 +1385,12 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 if((boolean~) line_ydxd::$5) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@1 line_ydxd::@3 - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@1 - (byte~) line_ydxd::$6 ← (byte) line_ydxd::x - (byte) 1 + (byte~) line_ydxd::$6 ← (byte) line_ydxd::x - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::x ← (byte~) line_ydxd::$6 (byte~) line_ydxd::$7 ← (byte) line_ydxd::e - (byte) line_ydxd::yd (byte) line_ydxd::e ← (byte~) line_ydxd::$7 @@ -1399,18 +1399,18 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 return to:@return plot: scope:[plot] from - (byte*) plot::plotter_x ← (byte) 0 - (byte*) plot::plotter_y ← (byte) 0 + (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y hi= (byte~) plot::$2 + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x + (byte*) plot::plotter_y - (byte*) plot::plotter ← (byte~) plot::$4 + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 *((byte*) plot::plotter) ← (byte~) plot::$6 @@ -1419,52 +1419,52 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from - (byte) init_plot_tables::bits ← (byte) 128 - (byte) init_plot_tables::x ← (byte) 0 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 + (byte) init_plot_tables::x ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word) 248 *((byte[]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP *((byte[]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits ← (byte) 128 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs ← (byte) 0 - (byte) init_plot_tables::y ← (byte) 0 + (byte*) init_plot_tables::yoffs ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs *((byte[]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word/signed word) 320 (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -1474,9 +1474,9 @@ init_screen: scope:[init_screen] from (byte*) init_screen::b ← (byte*) BITMAP to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - *((byte*) init_screen::b) ← (byte) 0 + *((byte*) init_screen::b) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b ← ++ (byte*) init_screen::b - (byte*~) init_screen::$0 ← (byte*) BITMAP + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -1484,9 +1484,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 (byte*) init_screen::c ← (byte*) SCREEN to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 - *((byte*) init_screen::c) ← (byte) 20 + *((byte*) init_screen::c) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c ← ++ (byte*) init_screen::c - (byte*~) init_screen::$2 ← (byte*) SCREEN + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -1508,33 +1508,33 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL (byte*) SCROLL ← (word) 53270 (byte*) D018 ← (word) 53272 (byte*) D011 ← (word) 53265 - (byte) RST8 ← (byte) 128 - (byte) ECM ← (byte) 64 - (byte) BMM ← (byte) 32 - (byte) DEN ← (byte) 16 - (byte) RSEL ← (byte) 8 + (byte) RST8 ← (byte/word/signed word) 128 + (byte) ECM ← (byte/signed byte/word/signed word) 64 + (byte) BMM ← (byte/signed byte/word/signed word) 32 + (byte) DEN ← (byte/signed byte/word/signed word) 16 + (byte) RSEL ← (byte/signed byte/word/signed word) 8 (byte*) D016 ← (word) 53270 - (byte) MCM ← (byte) 16 - (byte) CSEL ← (byte) 8 - (byte*) SCREEN ← (word) 1024 - (byte*) BITMAP ← (word) 8192 - (byte[]) plot_xlo ← (word) 4096 - (byte[]) plot_xhi ← (word) 4352 - (byte[]) plot_ylo ← (word) 4608 - (byte[]) plot_yhi ← (word) 4864 - (byte[]) plot_bit ← (word) 5120 - (byte[]) lines_x ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt ← (byte) 8 + (byte) MCM ← (byte/signed byte/word/signed word) 16 + (byte) CSEL ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) BITMAP ← (word/signed word) 8192 + (byte[]) plot_xlo ← (word/signed word) 4096 + (byte[]) plot_xhi ← (word/signed word) 4352 + (byte[]) plot_ylo ← (word/signed word) 4608 + (byte[]) plot_yhi ← (word/signed word) 4864 + (byte[]) plot_bit ← (word/signed word) 5120 + (byte[]) lines_x ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 - *((byte*) BGCOL) ← (byte) 0 - *((byte*) FGCOL) ← (byte) 0 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM | (byte) DEN (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011) ← (byte~) main::$2 - *((byte*) D018) ← (byte) 24 + *((byte*) D018) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -1552,14 +1552,14 @@ main::@return: scope:[main] from main::@5 return to:@return lines: scope:[lines] from main::@1 - (byte) lines::l ← (byte) 0 + (byte) lines::l ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte~) lines::$0 ← (byte[]) lines_x *idx (byte) lines::l - (byte~) lines::$1 ← (byte) lines::l + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y *idx (byte) lines::l - (byte~) lines::$4 ← (byte) lines::l + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y *idx (byte~) lines::$4 (byte) line::x0 ← (byte~) lines::$0 (byte) line::x1 ← (byte~) lines::$2 @@ -1706,7 +1706,7 @@ line::@return: scope:[line] from line::@29 line::@30 line::@31 line::@32 line:: return to:@return line_xdyi: scope:[line_xdyi] from line::@17 line::@27 - (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd >> (byte) 1 + (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd >> (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e ← (byte~) line_xdyi::$0 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 @@ -1715,7 +1715,7 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte~) line_xdyi::$2 ← (byte) line_xdyi::x + (byte) 1 + (byte~) line_xdyi::$2 ← (byte) line_xdyi::x + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::x ← (byte~) line_xdyi::$2 (byte~) line_xdyi::$3 ← (byte) line_xdyi::e + (byte) line_xdyi::yd (byte) line_xdyi::e ← (byte~) line_xdyi::$3 @@ -1724,12 +1724,12 @@ line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 if((boolean~) line_xdyi::$5) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte~) line_xdyi::$6 ← (byte) line_xdyi::y + (byte) 1 + (byte~) line_xdyi::$6 ← (byte) line_xdyi::y + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::y ← (byte~) line_xdyi::$6 (byte~) line_xdyi::$7 ← (byte) line_xdyi::e - (byte) line_xdyi::xd (byte) line_xdyi::e ← (byte~) line_xdyi::$7 @@ -1738,7 +1738,7 @@ line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 return to:@return line_xdyd: scope:[line_xdyd] from line::@20 line::@24 - (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd >> (byte) 1 + (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd >> (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e ← (byte~) line_xdyd::$0 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 @@ -1747,7 +1747,7 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte~) line_xdyd::$2 ← (byte) line_xdyd::x + (byte) 1 + (byte~) line_xdyd::$2 ← (byte) line_xdyd::x + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::x ← (byte~) line_xdyd::$2 (byte~) line_xdyd::$3 ← (byte) line_xdyd::e + (byte) line_xdyd::yd (byte) line_xdyd::e ← (byte~) line_xdyd::$3 @@ -1756,12 +1756,12 @@ line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 if((boolean~) line_xdyd::$5) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte~) line_xdyd::$6 ← (byte) line_xdyd::y - (byte) 1 + (byte~) line_xdyd::$6 ← (byte) line_xdyd::y - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::y ← (byte~) line_xdyd::$6 (byte~) line_xdyd::$7 ← (byte) line_xdyd::e - (byte) line_xdyd::xd (byte) line_xdyd::e ← (byte~) line_xdyd::$7 @@ -1770,7 +1770,7 @@ line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 return to:@return line_ydxi: scope:[line_ydxi] from line::@13 line::@3 - (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd >> (byte) 1 + (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd >> (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e ← (byte~) line_ydxi::$0 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 @@ -1779,7 +1779,7 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte~) line_ydxi::$2 ← (byte) line_ydxi::y + (byte) 1 + (byte~) line_ydxi::$2 ← (byte) line_ydxi::y + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::y ← (byte~) line_ydxi::$2 (byte~) line_ydxi::$3 ← (byte) line_ydxi::e + (byte) line_ydxi::xd (byte) line_ydxi::e ← (byte~) line_ydxi::$3 @@ -1788,12 +1788,12 @@ line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 if((boolean~) line_ydxi::$5) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte~) line_ydxi::$6 ← (byte) line_ydxi::x + (byte) 1 + (byte~) line_ydxi::$6 ← (byte) line_ydxi::x + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::x ← (byte~) line_ydxi::$6 (byte~) line_ydxi::$7 ← (byte) line_ydxi::e - (byte) line_ydxi::yd (byte) line_ydxi::e ← (byte~) line_ydxi::$7 @@ -1802,7 +1802,7 @@ line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 return to:@return line_ydxd: scope:[line_ydxd] from line::@10 line::@6 - (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd >> (byte) 1 + (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd >> (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e ← (byte~) line_ydxd::$0 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 @@ -1811,7 +1811,7 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte~) line_ydxd::$2 ← (byte) line_ydxd::y + (byte) 1 + (byte~) line_ydxd::$2 ← (byte) line_ydxd::y + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::y ← (byte~) line_ydxd::$2 (byte~) line_ydxd::$3 ← (byte) line_ydxd::e + (byte) line_ydxd::xd (byte) line_ydxd::e ← (byte~) line_ydxd::$3 @@ -1820,12 +1820,12 @@ line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 if((boolean~) line_ydxd::$5) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte~) line_ydxd::$6 ← (byte) line_ydxd::x - (byte) 1 + (byte~) line_ydxd::$6 ← (byte) line_ydxd::x - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::x ← (byte~) line_ydxd::$6 (byte~) line_ydxd::$7 ← (byte) line_ydxd::e - (byte) line_ydxd::yd (byte) line_ydxd::e ← (byte~) line_ydxd::$7 @@ -1834,18 +1834,18 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 return to:@return plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 - (byte*) plot::plotter_x ← (byte) 0 - (byte*) plot::plotter_y ← (byte) 0 + (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y hi= (byte~) plot::$2 + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x + (byte*) plot::plotter_y - (byte*) plot::plotter ← (byte~) plot::$4 + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 *((byte*) plot::plotter) ← (byte~) plot::$6 @@ -1854,52 +1854,52 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - (byte) init_plot_tables::bits ← (byte) 128 - (byte) init_plot_tables::x ← (byte) 0 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 + (byte) init_plot_tables::x ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word) 248 *((byte[]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP *((byte[]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits ← (byte) 128 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs ← (byte) 0 - (byte) init_plot_tables::y ← (byte) 0 + (byte*) init_plot_tables::yoffs ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs *((byte[]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word/signed word) 320 (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -1909,9 +1909,9 @@ init_screen: scope:[init_screen] from main (byte*) init_screen::b ← (byte*) BITMAP to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - *((byte*) init_screen::b) ← (byte) 0 + *((byte*) init_screen::b) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b ← ++ (byte*) init_screen::b - (byte*~) init_screen::$0 ← (byte*) BITMAP + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -1919,9 +1919,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 (byte*) init_screen::c ← (byte*) SCREEN to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 - *((byte*) init_screen::c) ← (byte) 20 + *((byte*) init_screen::c) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c ← ++ (byte*) init_screen::c - (byte*~) init_screen::$2 ← (byte*) SCREEN + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -1954,24 +1954,24 @@ CONTROL FLOW GRAPH SSA (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 (byte[]) plot_yhi#45 ← phi( @10/(byte[]) plot_yhi#47 ) @@ -1991,13 +1991,13 @@ main: scope:[main] from @10 (byte) BMM#1 ← phi( @10/(byte) BMM#2 ) (byte*) FGCOL#1 ← phi( @10/(byte*) FGCOL#2 ) (byte*) BGCOL#1 ← phi( @10/(byte*) BGCOL#2 ) - *((byte*) BGCOL#1) ← (byte) 0 - *((byte*) FGCOL#1) ← (byte) 0 + *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#1) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#1) ← (byte~) main::$2 - *((byte*) D018#1) ← (byte) 24 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -2056,7 +2056,7 @@ lines: scope:[lines] from main::@1 (byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 ) (byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 ) (byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 ) - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte[]) plot_bit#44 ← phi( lines/(byte[]) plot_bit#45 lines::@3/(byte[]) plot_bit#46 ) @@ -2069,10 +2069,10 @@ lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 ) (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -2385,7 +2385,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#0 ← (byte~) line_xdyi::$0 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 @@ -2416,7 +2416,7 @@ line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 (byte) line_xdyi::yd#3 ← phi( line_xdyi::@1/(byte) line_xdyi::yd#4 ) (byte) line_xdyi::e#3 ← phi( line_xdyi::@1/(byte) line_xdyi::e#5 ) (byte) line_xdyi::x#4 ← phi( line_xdyi::@1/(byte) line_xdyi::x#3 ) - (byte~) line_xdyi::$2 ← (byte) line_xdyi::x#4 + (byte) 1 + (byte~) line_xdyi::$2 ← (byte) line_xdyi::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::x#2 ← (byte~) line_xdyi::$2 (byte~) line_xdyi::$3 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#3 (byte) line_xdyi::e#1 ← (byte~) line_xdyi::$3 @@ -2436,7 +2436,7 @@ line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#7 ) (byte) line_xdyi::x#5 ← phi( line_xdyi::@3/(byte) line_xdyi::x#7 line_xdyi::@5/(byte) line_xdyi::x#2 ) (byte) line_xdyi::x1#2 ← phi( line_xdyi::@3/(byte) line_xdyi::x1#3 line_xdyi::@5/(byte) line_xdyi::x1#4 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x#5 < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return @@ -2452,7 +2452,7 @@ line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 (byte) line_xdyi::xd#3 ← phi( line_xdyi::@5/(byte) line_xdyi::xd#2 ) (byte) line_xdyi::e#4 ← phi( line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#4 ← phi( line_xdyi::@5/(byte) line_xdyi::y#7 ) - (byte~) line_xdyi::$6 ← (byte) line_xdyi::y#4 + (byte) 1 + (byte~) line_xdyi::$6 ← (byte) line_xdyi::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::y#2 ← (byte~) line_xdyi::$6 (byte~) line_xdyi::$7 ← (byte) line_xdyi::e#4 - (byte) line_xdyi::xd#3 (byte) line_xdyi::e#2 ← (byte~) line_xdyi::$7 @@ -2471,7 +2471,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#0 ← (byte~) line_xdyd::$0 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 @@ -2502,7 +2502,7 @@ line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 (byte) line_xdyd::yd#3 ← phi( line_xdyd::@1/(byte) line_xdyd::yd#4 ) (byte) line_xdyd::e#3 ← phi( line_xdyd::@1/(byte) line_xdyd::e#5 ) (byte) line_xdyd::x#4 ← phi( line_xdyd::@1/(byte) line_xdyd::x#3 ) - (byte~) line_xdyd::$2 ← (byte) line_xdyd::x#4 + (byte) 1 + (byte~) line_xdyd::$2 ← (byte) line_xdyd::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::x#2 ← (byte~) line_xdyd::$2 (byte~) line_xdyd::$3 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#3 (byte) line_xdyd::e#1 ← (byte~) line_xdyd::$3 @@ -2522,7 +2522,7 @@ line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#7 ) (byte) line_xdyd::x#5 ← phi( line_xdyd::@3/(byte) line_xdyd::x#7 line_xdyd::@5/(byte) line_xdyd::x#2 ) (byte) line_xdyd::x1#2 ← phi( line_xdyd::@3/(byte) line_xdyd::x1#3 line_xdyd::@5/(byte) line_xdyd::x1#4 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x#5 < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return @@ -2538,7 +2538,7 @@ line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 (byte) line_xdyd::xd#3 ← phi( line_xdyd::@5/(byte) line_xdyd::xd#2 ) (byte) line_xdyd::e#4 ← phi( line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#4 ← phi( line_xdyd::@5/(byte) line_xdyd::y#7 ) - (byte~) line_xdyd::$6 ← (byte) line_xdyd::y#4 - (byte) 1 + (byte~) line_xdyd::$6 ← (byte) line_xdyd::y#4 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::y#2 ← (byte~) line_xdyd::$6 (byte~) line_xdyd::$7 ← (byte) line_xdyd::e#4 - (byte) line_xdyd::xd#3 (byte) line_xdyd::e#2 ← (byte~) line_xdyd::$7 @@ -2557,7 +2557,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#0 ← (byte~) line_ydxi::$0 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 @@ -2588,7 +2588,7 @@ line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 (byte) line_ydxi::xd#3 ← phi( line_ydxi::@1/(byte) line_ydxi::xd#4 ) (byte) line_ydxi::e#3 ← phi( line_ydxi::@1/(byte) line_ydxi::e#5 ) (byte) line_ydxi::y#4 ← phi( line_ydxi::@1/(byte) line_ydxi::y#3 ) - (byte~) line_ydxi::$2 ← (byte) line_ydxi::y#4 + (byte) 1 + (byte~) line_ydxi::$2 ← (byte) line_ydxi::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::y#2 ← (byte~) line_ydxi::$2 (byte~) line_ydxi::$3 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#3 (byte) line_ydxi::e#1 ← (byte~) line_ydxi::$3 @@ -2608,7 +2608,7 @@ line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#7 ) (byte) line_ydxi::y#5 ← phi( line_ydxi::@3/(byte) line_ydxi::y#7 line_ydxi::@5/(byte) line_ydxi::y#2 ) (byte) line_ydxi::y1#2 ← phi( line_ydxi::@3/(byte) line_ydxi::y1#3 line_ydxi::@5/(byte) line_ydxi::y1#4 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y#5 < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return @@ -2624,7 +2624,7 @@ line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 (byte) line_ydxi::yd#3 ← phi( line_ydxi::@5/(byte) line_ydxi::yd#2 ) (byte) line_ydxi::e#4 ← phi( line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#4 ← phi( line_ydxi::@5/(byte) line_ydxi::x#7 ) - (byte~) line_ydxi::$6 ← (byte) line_ydxi::x#4 + (byte) 1 + (byte~) line_ydxi::$6 ← (byte) line_ydxi::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::x#2 ← (byte~) line_ydxi::$6 (byte~) line_ydxi::$7 ← (byte) line_ydxi::e#4 - (byte) line_ydxi::yd#3 (byte) line_ydxi::e#2 ← (byte~) line_ydxi::$7 @@ -2643,7 +2643,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#0 ← (byte~) line_ydxd::$0 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 @@ -2674,7 +2674,7 @@ line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 (byte) line_ydxd::xd#3 ← phi( line_ydxd::@1/(byte) line_ydxd::xd#4 ) (byte) line_ydxd::e#3 ← phi( line_ydxd::@1/(byte) line_ydxd::e#5 ) (byte) line_ydxd::y#4 ← phi( line_ydxd::@1/(byte) line_ydxd::y#3 ) - (byte~) line_ydxd::$2 ← (byte) line_ydxd::y#4 + (byte) 1 + (byte~) line_ydxd::$2 ← (byte) line_ydxd::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::y#2 ← (byte~) line_ydxd::$2 (byte~) line_ydxd::$3 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#3 (byte) line_ydxd::e#1 ← (byte~) line_ydxd::$3 @@ -2694,7 +2694,7 @@ line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#7 ) (byte) line_ydxd::y#5 ← phi( line_ydxd::@3/(byte) line_ydxd::y#7 line_ydxd::@5/(byte) line_ydxd::y#2 ) (byte) line_ydxd::y1#2 ← phi( line_ydxd::@3/(byte) line_ydxd::y1#3 line_ydxd::@5/(byte) line_ydxd::y1#4 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y#5 < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return @@ -2710,7 +2710,7 @@ line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 (byte) line_ydxd::yd#3 ← phi( line_ydxd::@5/(byte) line_ydxd::yd#2 ) (byte) line_ydxd::e#4 ← phi( line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#4 ← phi( line_ydxd::@5/(byte) line_ydxd::x#7 ) - (byte~) line_ydxd::$6 ← (byte) line_ydxd::x#4 - (byte) 1 + (byte~) line_ydxd::$6 ← (byte) line_ydxd::x#4 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::x#2 ← (byte~) line_ydxd::$6 (byte~) line_ydxd::$7 ← (byte) line_ydxd::e#4 - (byte) line_ydxd::yd#3 (byte) line_ydxd::e#2 ← (byte~) line_ydxd::$7 @@ -2726,18 +2726,18 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte[]) plot_xlo#1 ← phi( line_xdyd::@1/(byte[]) plot_xlo#3 line_xdyi::@1/(byte[]) plot_xlo#4 line_ydxd::@1/(byte[]) plot_xlo#5 line_ydxi::@1/(byte[]) plot_xlo#6 ) (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 ) (byte[]) plot_xhi#1 ← phi( line_xdyd::@1/(byte[]) plot_xhi#3 line_xdyi::@1/(byte[]) plot_xhi#4 line_ydxd::@1/(byte[]) plot_xhi#5 line_ydxi::@1/(byte[]) plot_xhi#6 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 - (byte*) plot::plotter#0 ← (byte~) plot::$4 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + (byte*) plot::plotter#0 ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -2752,8 +2752,8 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 (byte[]) plot_xhi#7 ← phi( main::@3/(byte[]) plot_xhi#17 ) (byte*) BITMAP#4 ← phi( main::@3/(byte*) BITMAP#8 ) (byte[]) plot_xlo#7 ← phi( main::@3/(byte[]) plot_xlo#17 ) - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#35 ← phi( init_plot_tables/(byte[]) plot_yhi#41 init_plot_tables::@2/(byte[]) plot_yhi#17 ) @@ -2764,14 +2764,14 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#4 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#7 init_plot_tables::@2/(byte[]) plot_xlo#8 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits#1 ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 @@ -2785,7 +2785,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#8 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 init_plot_tables::@5/(byte[]) plot_xlo#18 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#4 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 @@ -2796,27 +2796,27 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (byte*) BITMAP#9 ← phi( init_plot_tables::@1/(byte*) BITMAP#1 ) (byte[]) plot_xlo#18 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 ) - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 (byte[]) plot_yhi#8 ← phi( init_plot_tables::@2/(byte[]) plot_yhi#17 ) (byte[]) plot_ylo#8 ← phi( init_plot_tables::@2/(byte[]) plot_ylo#17 ) - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#7 init_plot_tables::@6/(byte[]) plot_yhi#8 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#7 init_plot_tables::@6/(byte[]) plot_ylo#8 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 @@ -2826,7 +2826,7 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#4 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 @@ -2834,7 +2834,7 @@ init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 (byte[]) plot_ylo#18 ← phi( init_plot_tables::@3/(byte[]) plot_ylo#2 ) (byte) init_plot_tables::y#4 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 ) (byte*) init_plot_tables::yoffs#3 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 ) - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word/signed word) 320 (byte*) init_plot_tables::yoffs#1 ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -2849,9 +2849,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#3 ← phi( init_screen/(byte*) SCREEN#4 init_screen::@1/(byte*) SCREEN#3 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#2 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -2862,9 +2862,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -2903,24 +2903,24 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 (byte[]) plot_yhi#45 ← phi( @10/(byte[]) plot_yhi#47 ) @@ -2940,13 +2940,13 @@ main: scope:[main] from @10 (byte) BMM#1 ← phi( @10/(byte) BMM#2 ) (byte*) FGCOL#1 ← phi( @10/(byte*) FGCOL#2 ) (byte*) BGCOL#1 ← phi( @10/(byte*) BGCOL#2 ) - *((byte*) BGCOL#1) ← (byte) 0 - *((byte*) FGCOL#1) ← (byte) 0 + *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#1) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#1) ← (byte~) main::$2 - *((byte*) D018#1) ← (byte) 24 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -3005,7 +3005,7 @@ lines: scope:[lines] from main::@1 (byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 ) (byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 ) (byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 ) - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte[]) plot_bit#44 ← phi( lines/(byte[]) plot_bit#45 lines::@3/(byte[]) plot_bit#46 ) @@ -3018,10 +3018,10 @@ lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 ) (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -3334,7 +3334,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#0 ← (byte~) line_xdyi::$0 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 @@ -3365,7 +3365,7 @@ line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 (byte) line_xdyi::yd#3 ← phi( line_xdyi::@1/(byte) line_xdyi::yd#4 ) (byte) line_xdyi::e#3 ← phi( line_xdyi::@1/(byte) line_xdyi::e#5 ) (byte) line_xdyi::x#4 ← phi( line_xdyi::@1/(byte) line_xdyi::x#3 ) - (byte~) line_xdyi::$2 ← (byte) line_xdyi::x#4 + (byte) 1 + (byte~) line_xdyi::$2 ← (byte) line_xdyi::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::x#2 ← (byte~) line_xdyi::$2 (byte~) line_xdyi::$3 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#3 (byte) line_xdyi::e#1 ← (byte~) line_xdyi::$3 @@ -3385,7 +3385,7 @@ line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#7 ) (byte) line_xdyi::x#5 ← phi( line_xdyi::@3/(byte) line_xdyi::x#7 line_xdyi::@5/(byte) line_xdyi::x#2 ) (byte) line_xdyi::x1#2 ← phi( line_xdyi::@3/(byte) line_xdyi::x1#3 line_xdyi::@5/(byte) line_xdyi::x1#4 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x#5 < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return @@ -3401,7 +3401,7 @@ line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 (byte) line_xdyi::xd#3 ← phi( line_xdyi::@5/(byte) line_xdyi::xd#2 ) (byte) line_xdyi::e#4 ← phi( line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#4 ← phi( line_xdyi::@5/(byte) line_xdyi::y#7 ) - (byte~) line_xdyi::$6 ← (byte) line_xdyi::y#4 + (byte) 1 + (byte~) line_xdyi::$6 ← (byte) line_xdyi::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::y#2 ← (byte~) line_xdyi::$6 (byte~) line_xdyi::$7 ← (byte) line_xdyi::e#4 - (byte) line_xdyi::xd#3 (byte) line_xdyi::e#2 ← (byte~) line_xdyi::$7 @@ -3420,7 +3420,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#0 ← (byte~) line_xdyd::$0 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 @@ -3451,7 +3451,7 @@ line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 (byte) line_xdyd::yd#3 ← phi( line_xdyd::@1/(byte) line_xdyd::yd#4 ) (byte) line_xdyd::e#3 ← phi( line_xdyd::@1/(byte) line_xdyd::e#5 ) (byte) line_xdyd::x#4 ← phi( line_xdyd::@1/(byte) line_xdyd::x#3 ) - (byte~) line_xdyd::$2 ← (byte) line_xdyd::x#4 + (byte) 1 + (byte~) line_xdyd::$2 ← (byte) line_xdyd::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::x#2 ← (byte~) line_xdyd::$2 (byte~) line_xdyd::$3 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#3 (byte) line_xdyd::e#1 ← (byte~) line_xdyd::$3 @@ -3471,7 +3471,7 @@ line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#7 ) (byte) line_xdyd::x#5 ← phi( line_xdyd::@3/(byte) line_xdyd::x#7 line_xdyd::@5/(byte) line_xdyd::x#2 ) (byte) line_xdyd::x1#2 ← phi( line_xdyd::@3/(byte) line_xdyd::x1#3 line_xdyd::@5/(byte) line_xdyd::x1#4 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x#5 < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return @@ -3487,7 +3487,7 @@ line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 (byte) line_xdyd::xd#3 ← phi( line_xdyd::@5/(byte) line_xdyd::xd#2 ) (byte) line_xdyd::e#4 ← phi( line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#4 ← phi( line_xdyd::@5/(byte) line_xdyd::y#7 ) - (byte~) line_xdyd::$6 ← (byte) line_xdyd::y#4 - (byte) 1 + (byte~) line_xdyd::$6 ← (byte) line_xdyd::y#4 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::y#2 ← (byte~) line_xdyd::$6 (byte~) line_xdyd::$7 ← (byte) line_xdyd::e#4 - (byte) line_xdyd::xd#3 (byte) line_xdyd::e#2 ← (byte~) line_xdyd::$7 @@ -3506,7 +3506,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#0 ← (byte~) line_ydxi::$0 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 @@ -3537,7 +3537,7 @@ line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 (byte) line_ydxi::xd#3 ← phi( line_ydxi::@1/(byte) line_ydxi::xd#4 ) (byte) line_ydxi::e#3 ← phi( line_ydxi::@1/(byte) line_ydxi::e#5 ) (byte) line_ydxi::y#4 ← phi( line_ydxi::@1/(byte) line_ydxi::y#3 ) - (byte~) line_ydxi::$2 ← (byte) line_ydxi::y#4 + (byte) 1 + (byte~) line_ydxi::$2 ← (byte) line_ydxi::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::y#2 ← (byte~) line_ydxi::$2 (byte~) line_ydxi::$3 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#3 (byte) line_ydxi::e#1 ← (byte~) line_ydxi::$3 @@ -3557,7 +3557,7 @@ line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#7 ) (byte) line_ydxi::y#5 ← phi( line_ydxi::@3/(byte) line_ydxi::y#7 line_ydxi::@5/(byte) line_ydxi::y#2 ) (byte) line_ydxi::y1#2 ← phi( line_ydxi::@3/(byte) line_ydxi::y1#3 line_ydxi::@5/(byte) line_ydxi::y1#4 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y#5 < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return @@ -3573,7 +3573,7 @@ line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 (byte) line_ydxi::yd#3 ← phi( line_ydxi::@5/(byte) line_ydxi::yd#2 ) (byte) line_ydxi::e#4 ← phi( line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#4 ← phi( line_ydxi::@5/(byte) line_ydxi::x#7 ) - (byte~) line_ydxi::$6 ← (byte) line_ydxi::x#4 + (byte) 1 + (byte~) line_ydxi::$6 ← (byte) line_ydxi::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::x#2 ← (byte~) line_ydxi::$6 (byte~) line_ydxi::$7 ← (byte) line_ydxi::e#4 - (byte) line_ydxi::yd#3 (byte) line_ydxi::e#2 ← (byte~) line_ydxi::$7 @@ -3592,7 +3592,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#0 ← (byte~) line_ydxd::$0 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 @@ -3623,7 +3623,7 @@ line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 (byte) line_ydxd::xd#3 ← phi( line_ydxd::@1/(byte) line_ydxd::xd#4 ) (byte) line_ydxd::e#3 ← phi( line_ydxd::@1/(byte) line_ydxd::e#5 ) (byte) line_ydxd::y#4 ← phi( line_ydxd::@1/(byte) line_ydxd::y#3 ) - (byte~) line_ydxd::$2 ← (byte) line_ydxd::y#4 + (byte) 1 + (byte~) line_ydxd::$2 ← (byte) line_ydxd::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::y#2 ← (byte~) line_ydxd::$2 (byte~) line_ydxd::$3 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#3 (byte) line_ydxd::e#1 ← (byte~) line_ydxd::$3 @@ -3643,7 +3643,7 @@ line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#7 ) (byte) line_ydxd::y#5 ← phi( line_ydxd::@3/(byte) line_ydxd::y#7 line_ydxd::@5/(byte) line_ydxd::y#2 ) (byte) line_ydxd::y1#2 ← phi( line_ydxd::@3/(byte) line_ydxd::y1#3 line_ydxd::@5/(byte) line_ydxd::y1#4 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y#5 < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return @@ -3659,7 +3659,7 @@ line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 (byte) line_ydxd::yd#3 ← phi( line_ydxd::@5/(byte) line_ydxd::yd#2 ) (byte) line_ydxd::e#4 ← phi( line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#4 ← phi( line_ydxd::@5/(byte) line_ydxd::x#7 ) - (byte~) line_ydxd::$6 ← (byte) line_ydxd::x#4 - (byte) 1 + (byte~) line_ydxd::$6 ← (byte) line_ydxd::x#4 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::x#2 ← (byte~) line_ydxd::$6 (byte~) line_ydxd::$7 ← (byte) line_ydxd::e#4 - (byte) line_ydxd::yd#3 (byte) line_ydxd::e#2 ← (byte~) line_ydxd::$7 @@ -3675,18 +3675,18 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte[]) plot_xlo#1 ← phi( line_xdyd::@1/(byte[]) plot_xlo#3 line_xdyi::@1/(byte[]) plot_xlo#4 line_ydxd::@1/(byte[]) plot_xlo#5 line_ydxi::@1/(byte[]) plot_xlo#6 ) (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 ) (byte[]) plot_xhi#1 ← phi( line_xdyd::@1/(byte[]) plot_xhi#3 line_xdyi::@1/(byte[]) plot_xhi#4 line_ydxd::@1/(byte[]) plot_xhi#5 line_ydxi::@1/(byte[]) plot_xhi#6 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 - (byte*) plot::plotter#0 ← (byte~) plot::$4 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + (byte*) plot::plotter#0 ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -3701,8 +3701,8 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 (byte[]) plot_xhi#7 ← phi( main::@3/(byte[]) plot_xhi#17 ) (byte*) BITMAP#4 ← phi( main::@3/(byte*) BITMAP#8 ) (byte[]) plot_xlo#7 ← phi( main::@3/(byte[]) plot_xlo#17 ) - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#35 ← phi( init_plot_tables/(byte[]) plot_yhi#41 init_plot_tables::@2/(byte[]) plot_yhi#17 ) @@ -3713,14 +3713,14 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#4 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#7 init_plot_tables::@2/(byte[]) plot_xlo#8 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits#1 ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 @@ -3734,7 +3734,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#8 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 init_plot_tables::@5/(byte[]) plot_xlo#18 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#4 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 @@ -3745,27 +3745,27 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (byte*) BITMAP#9 ← phi( init_plot_tables::@1/(byte*) BITMAP#1 ) (byte[]) plot_xlo#18 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 ) - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 (byte[]) plot_yhi#8 ← phi( init_plot_tables::@2/(byte[]) plot_yhi#17 ) (byte[]) plot_ylo#8 ← phi( init_plot_tables::@2/(byte[]) plot_ylo#17 ) - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#7 init_plot_tables::@6/(byte[]) plot_yhi#8 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#7 init_plot_tables::@6/(byte[]) plot_ylo#8 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 @@ -3775,7 +3775,7 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#4 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 @@ -3783,7 +3783,7 @@ init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 (byte[]) plot_ylo#18 ← phi( init_plot_tables::@3/(byte[]) plot_ylo#2 ) (byte) init_plot_tables::y#4 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 ) (byte*) init_plot_tables::yoffs#3 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 ) - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word/signed word) 320 (byte*) init_plot_tables::yoffs#1 ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -3798,9 +3798,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#3 ← phi( init_screen/(byte*) SCREEN#4 init_screen::@1/(byte*) SCREEN#3 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#2 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -3811,9 +3811,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -4430,7 +4430,7 @@ INITIAL SSA SYMBOL TABLE (byte~) plot::$1 (byte~) plot::$2 (byte~) plot::$3 -(byte~) plot::$4 +(byte*~) plot::$4 (byte~) plot::$5 (byte~) plot::$6 (label) plot::@return @@ -4440,10 +4440,10 @@ INITIAL SSA SYMBOL TABLE (byte*) plot::plotter_x#0 (byte*) plot::plotter_x#1 (byte*) plot::plotter_x#2 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#0 -(byte*) plot::plotter_y#1 -(byte*) plot::plotter_y#2 +(word) plot::plotter_y +(word) plot::plotter_y#0 +(word) plot::plotter_y#1 +(word) plot::plotter_y#2 (byte) plot::x (byte) plot::x#0 (byte) plot::x#1 @@ -4738,24 +4738,24 @@ CONTROL FLOW GRAPH (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 (byte[]) plot_yhi#45 ← phi( @10/(byte[]) plot_yhi#47 ) @@ -4775,13 +4775,13 @@ main: scope:[main] from @10 (byte) BMM#1 ← phi( @10/(byte) BMM#2 ) (byte*) FGCOL#1 ← phi( @10/(byte*) FGCOL#2 ) (byte*) BGCOL#1 ← phi( @10/(byte*) BGCOL#2 ) - *((byte*) BGCOL#1) ← (byte) 0 - *((byte*) FGCOL#1) ← (byte) 0 + *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#1) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#1) ← (byte~) main::$2 - *((byte*) D018#1) ← (byte) 24 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -4840,7 +4840,7 @@ lines: scope:[lines] from main::@1 (byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 ) (byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 ) (byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 ) - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte[]) plot_bit#44 ← phi( lines/(byte[]) plot_bit#45 lines::@3/(byte[]) plot_bit#46 ) @@ -4853,10 +4853,10 @@ lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 ) (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -5153,7 +5153,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#0 ← (byte~) line_xdyi::$0 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 @@ -5184,7 +5184,7 @@ line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 (byte) line_xdyi::yd#3 ← phi( line_xdyi::@1/(byte) line_xdyi::yd#4 ) (byte) line_xdyi::e#3 ← phi( line_xdyi::@1/(byte) line_xdyi::e#5 ) (byte) line_xdyi::x#4 ← phi( line_xdyi::@1/(byte) line_xdyi::x#3 ) - (byte~) line_xdyi::$2 ← (byte) line_xdyi::x#4 + (byte) 1 + (byte~) line_xdyi::$2 ← (byte) line_xdyi::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::x#2 ← (byte~) line_xdyi::$2 (byte~) line_xdyi::$3 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#3 (byte) line_xdyi::e#1 ← (byte~) line_xdyi::$3 @@ -5204,7 +5204,7 @@ line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#7 ) (byte) line_xdyi::x#5 ← phi( line_xdyi::@3/(byte) line_xdyi::x#7 line_xdyi::@5/(byte) line_xdyi::x#2 ) (byte) line_xdyi::x1#2 ← phi( line_xdyi::@3/(byte) line_xdyi::x1#3 line_xdyi::@5/(byte) line_xdyi::x1#4 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x#5 < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return @@ -5220,7 +5220,7 @@ line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 (byte) line_xdyi::xd#3 ← phi( line_xdyi::@5/(byte) line_xdyi::xd#2 ) (byte) line_xdyi::e#4 ← phi( line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#4 ← phi( line_xdyi::@5/(byte) line_xdyi::y#7 ) - (byte~) line_xdyi::$6 ← (byte) line_xdyi::y#4 + (byte) 1 + (byte~) line_xdyi::$6 ← (byte) line_xdyi::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::y#2 ← (byte~) line_xdyi::$6 (byte~) line_xdyi::$7 ← (byte) line_xdyi::e#4 - (byte) line_xdyi::xd#3 (byte) line_xdyi::e#2 ← (byte~) line_xdyi::$7 @@ -5239,7 +5239,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#0 ← (byte~) line_xdyd::$0 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 @@ -5270,7 +5270,7 @@ line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 (byte) line_xdyd::yd#3 ← phi( line_xdyd::@1/(byte) line_xdyd::yd#4 ) (byte) line_xdyd::e#3 ← phi( line_xdyd::@1/(byte) line_xdyd::e#5 ) (byte) line_xdyd::x#4 ← phi( line_xdyd::@1/(byte) line_xdyd::x#3 ) - (byte~) line_xdyd::$2 ← (byte) line_xdyd::x#4 + (byte) 1 + (byte~) line_xdyd::$2 ← (byte) line_xdyd::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::x#2 ← (byte~) line_xdyd::$2 (byte~) line_xdyd::$3 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#3 (byte) line_xdyd::e#1 ← (byte~) line_xdyd::$3 @@ -5290,7 +5290,7 @@ line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#7 ) (byte) line_xdyd::x#5 ← phi( line_xdyd::@3/(byte) line_xdyd::x#7 line_xdyd::@5/(byte) line_xdyd::x#2 ) (byte) line_xdyd::x1#2 ← phi( line_xdyd::@3/(byte) line_xdyd::x1#3 line_xdyd::@5/(byte) line_xdyd::x1#4 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x#5 < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return @@ -5306,7 +5306,7 @@ line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 (byte) line_xdyd::xd#3 ← phi( line_xdyd::@5/(byte) line_xdyd::xd#2 ) (byte) line_xdyd::e#4 ← phi( line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#4 ← phi( line_xdyd::@5/(byte) line_xdyd::y#7 ) - (byte~) line_xdyd::$6 ← (byte) line_xdyd::y#4 - (byte) 1 + (byte~) line_xdyd::$6 ← (byte) line_xdyd::y#4 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::y#2 ← (byte~) line_xdyd::$6 (byte~) line_xdyd::$7 ← (byte) line_xdyd::e#4 - (byte) line_xdyd::xd#3 (byte) line_xdyd::e#2 ← (byte~) line_xdyd::$7 @@ -5325,7 +5325,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#0 ← (byte~) line_ydxi::$0 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 @@ -5356,7 +5356,7 @@ line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 (byte) line_ydxi::xd#3 ← phi( line_ydxi::@1/(byte) line_ydxi::xd#4 ) (byte) line_ydxi::e#3 ← phi( line_ydxi::@1/(byte) line_ydxi::e#5 ) (byte) line_ydxi::y#4 ← phi( line_ydxi::@1/(byte) line_ydxi::y#3 ) - (byte~) line_ydxi::$2 ← (byte) line_ydxi::y#4 + (byte) 1 + (byte~) line_ydxi::$2 ← (byte) line_ydxi::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::y#2 ← (byte~) line_ydxi::$2 (byte~) line_ydxi::$3 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#3 (byte) line_ydxi::e#1 ← (byte~) line_ydxi::$3 @@ -5376,7 +5376,7 @@ line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#7 ) (byte) line_ydxi::y#5 ← phi( line_ydxi::@3/(byte) line_ydxi::y#7 line_ydxi::@5/(byte) line_ydxi::y#2 ) (byte) line_ydxi::y1#2 ← phi( line_ydxi::@3/(byte) line_ydxi::y1#3 line_ydxi::@5/(byte) line_ydxi::y1#4 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y#5 < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return @@ -5392,7 +5392,7 @@ line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 (byte) line_ydxi::yd#3 ← phi( line_ydxi::@5/(byte) line_ydxi::yd#2 ) (byte) line_ydxi::e#4 ← phi( line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#4 ← phi( line_ydxi::@5/(byte) line_ydxi::x#7 ) - (byte~) line_ydxi::$6 ← (byte) line_ydxi::x#4 + (byte) 1 + (byte~) line_ydxi::$6 ← (byte) line_ydxi::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::x#2 ← (byte~) line_ydxi::$6 (byte~) line_ydxi::$7 ← (byte) line_ydxi::e#4 - (byte) line_ydxi::yd#3 (byte) line_ydxi::e#2 ← (byte~) line_ydxi::$7 @@ -5411,7 +5411,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#0 ← (byte~) line_ydxd::$0 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 @@ -5442,7 +5442,7 @@ line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 (byte) line_ydxd::xd#3 ← phi( line_ydxd::@1/(byte) line_ydxd::xd#4 ) (byte) line_ydxd::e#3 ← phi( line_ydxd::@1/(byte) line_ydxd::e#5 ) (byte) line_ydxd::y#4 ← phi( line_ydxd::@1/(byte) line_ydxd::y#3 ) - (byte~) line_ydxd::$2 ← (byte) line_ydxd::y#4 + (byte) 1 + (byte~) line_ydxd::$2 ← (byte) line_ydxd::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::y#2 ← (byte~) line_ydxd::$2 (byte~) line_ydxd::$3 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#3 (byte) line_ydxd::e#1 ← (byte~) line_ydxd::$3 @@ -5462,7 +5462,7 @@ line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#7 ) (byte) line_ydxd::y#5 ← phi( line_ydxd::@3/(byte) line_ydxd::y#7 line_ydxd::@5/(byte) line_ydxd::y#2 ) (byte) line_ydxd::y1#2 ← phi( line_ydxd::@3/(byte) line_ydxd::y1#3 line_ydxd::@5/(byte) line_ydxd::y1#4 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y#5 < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return @@ -5478,7 +5478,7 @@ line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 (byte) line_ydxd::yd#3 ← phi( line_ydxd::@5/(byte) line_ydxd::yd#2 ) (byte) line_ydxd::e#4 ← phi( line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#4 ← phi( line_ydxd::@5/(byte) line_ydxd::x#7 ) - (byte~) line_ydxd::$6 ← (byte) line_ydxd::x#4 - (byte) 1 + (byte~) line_ydxd::$6 ← (byte) line_ydxd::x#4 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::x#2 ← (byte~) line_ydxd::$6 (byte~) line_ydxd::$7 ← (byte) line_ydxd::e#4 - (byte) line_ydxd::yd#3 (byte) line_ydxd::e#2 ← (byte~) line_ydxd::$7 @@ -5494,18 +5494,18 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte[]) plot_xlo#1 ← phi( line_xdyd::@1/(byte[]) plot_xlo#3 line_xdyi::@1/(byte[]) plot_xlo#4 line_ydxd::@1/(byte[]) plot_xlo#5 line_ydxi::@1/(byte[]) plot_xlo#6 ) (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 ) (byte[]) plot_xhi#1 ← phi( line_xdyd::@1/(byte[]) plot_xhi#3 line_xdyi::@1/(byte[]) plot_xhi#4 line_ydxd::@1/(byte[]) plot_xhi#5 line_ydxi::@1/(byte[]) plot_xhi#6 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 - (byte*) plot::plotter#0 ← (byte~) plot::$4 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + (byte*) plot::plotter#0 ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -5520,8 +5520,8 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 (byte[]) plot_xhi#7 ← phi( main::@3/(byte[]) plot_xhi#17 ) (byte*) BITMAP#4 ← phi( main::@3/(byte*) BITMAP#8 ) (byte[]) plot_xlo#7 ← phi( main::@3/(byte[]) plot_xlo#17 ) - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#35 ← phi( init_plot_tables/(byte[]) plot_yhi#41 init_plot_tables::@2/(byte[]) plot_yhi#17 ) @@ -5532,14 +5532,14 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#4 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#7 init_plot_tables::@2/(byte[]) plot_xlo#8 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits#1 ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 @@ -5553,7 +5553,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#8 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 init_plot_tables::@5/(byte[]) plot_xlo#18 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#4 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 @@ -5564,27 +5564,27 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (byte*) BITMAP#9 ← phi( init_plot_tables::@1/(byte*) BITMAP#1 ) (byte[]) plot_xlo#18 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 ) - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 (byte[]) plot_yhi#8 ← phi( init_plot_tables::@2/(byte[]) plot_yhi#17 ) (byte[]) plot_ylo#8 ← phi( init_plot_tables::@2/(byte[]) plot_ylo#17 ) - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#7 init_plot_tables::@6/(byte[]) plot_yhi#8 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#7 init_plot_tables::@6/(byte[]) plot_ylo#8 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 @@ -5594,7 +5594,7 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#4 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 @@ -5602,7 +5602,7 @@ init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 (byte[]) plot_ylo#18 ← phi( init_plot_tables::@3/(byte[]) plot_ylo#2 ) (byte) init_plot_tables::y#4 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 ) (byte*) init_plot_tables::yoffs#3 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 ) - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word/signed word) 320 (byte*) init_plot_tables::yoffs#1 ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -5617,9 +5617,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#3 ← phi( init_screen/(byte*) SCREEN#4 init_screen::@1/(byte*) SCREEN#3 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#2 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -5630,9 +5630,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -5672,8 +5672,8 @@ Inversing boolean not (boolean~) line_xdyi::$5 ← (byte) line_xdyi::xd#2 >= (by Inversing boolean not (boolean~) line_xdyd::$5 ← (byte) line_xdyd::xd#2 >= (byte) line_xdyd::e#1 from (boolean~) line_xdyd::$4 ← (byte) line_xdyd::xd#2 < (byte) line_xdyd::e#1 Inversing boolean not (boolean~) line_ydxi::$5 ← (byte) line_ydxi::yd#2 >= (byte) line_ydxi::e#1 from (boolean~) line_ydxi::$4 ← (byte) line_ydxi::yd#2 < (byte) line_ydxi::e#1 Inversing boolean not (boolean~) line_ydxd::$5 ← (byte) line_ydxd::yd#2 >= (byte) line_ydxd::e#1 from (boolean~) line_ydxd::$4 ← (byte) line_ydxd::yd#2 < (byte) line_ydxd::e#1 -Inversing boolean not (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 from (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte) 0 -Inversing boolean not (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 from (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 +Inversing boolean not (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 from (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 from (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -5683,24 +5683,24 @@ CONTROL FLOW GRAPH (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 (byte[]) plot_yhi#45 ← phi( @10/(byte[]) plot_yhi#47 ) @@ -5720,13 +5720,13 @@ main: scope:[main] from @10 (byte) BMM#1 ← phi( @10/(byte) BMM#2 ) (byte*) FGCOL#1 ← phi( @10/(byte*) FGCOL#2 ) (byte*) BGCOL#1 ← phi( @10/(byte*) BGCOL#2 ) - *((byte*) BGCOL#1) ← (byte) 0 - *((byte*) FGCOL#1) ← (byte) 0 + *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#1) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#1) ← (byte~) main::$2 - *((byte*) D018#1) ← (byte) 24 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -5785,7 +5785,7 @@ lines: scope:[lines] from main::@1 (byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 ) (byte[]) lines_y#2 ← phi( main::@1/(byte[]) lines_y#4 ) (byte[]) lines_x#2 ← phi( main::@1/(byte[]) lines_x#4 ) - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte[]) plot_bit#44 ← phi( lines/(byte[]) plot_bit#45 lines::@3/(byte[]) plot_bit#46 ) @@ -5798,10 +5798,10 @@ lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 ) (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -6091,7 +6091,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte~) line_xdyi::$0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#0 ← (byte~) line_xdyi::$0 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 @@ -6122,7 +6122,7 @@ line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 (byte) line_xdyi::yd#3 ← phi( line_xdyi::@1/(byte) line_xdyi::yd#4 ) (byte) line_xdyi::e#3 ← phi( line_xdyi::@1/(byte) line_xdyi::e#5 ) (byte) line_xdyi::x#4 ← phi( line_xdyi::@1/(byte) line_xdyi::x#3 ) - (byte~) line_xdyi::$2 ← (byte) line_xdyi::x#4 + (byte) 1 + (byte~) line_xdyi::$2 ← (byte) line_xdyi::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::x#2 ← (byte~) line_xdyi::$2 (byte~) line_xdyi::$3 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#3 (byte) line_xdyi::e#1 ← (byte~) line_xdyi::$3 @@ -6141,7 +6141,7 @@ line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#7 ) (byte) line_xdyi::x#5 ← phi( line_xdyi::@3/(byte) line_xdyi::x#7 line_xdyi::@5/(byte) line_xdyi::x#2 ) (byte) line_xdyi::x1#2 ← phi( line_xdyi::@3/(byte) line_xdyi::x1#3 line_xdyi::@5/(byte) line_xdyi::x1#4 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x#5 < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return @@ -6157,7 +6157,7 @@ line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 (byte) line_xdyi::xd#3 ← phi( line_xdyi::@5/(byte) line_xdyi::xd#2 ) (byte) line_xdyi::e#4 ← phi( line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#4 ← phi( line_xdyi::@5/(byte) line_xdyi::y#7 ) - (byte~) line_xdyi::$6 ← (byte) line_xdyi::y#4 + (byte) 1 + (byte~) line_xdyi::$6 ← (byte) line_xdyi::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::y#2 ← (byte~) line_xdyi::$6 (byte~) line_xdyi::$7 ← (byte) line_xdyi::e#4 - (byte) line_xdyi::xd#3 (byte) line_xdyi::e#2 ← (byte~) line_xdyi::$7 @@ -6176,7 +6176,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte~) line_xdyd::$0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#0 ← (byte~) line_xdyd::$0 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 @@ -6207,7 +6207,7 @@ line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 (byte) line_xdyd::yd#3 ← phi( line_xdyd::@1/(byte) line_xdyd::yd#4 ) (byte) line_xdyd::e#3 ← phi( line_xdyd::@1/(byte) line_xdyd::e#5 ) (byte) line_xdyd::x#4 ← phi( line_xdyd::@1/(byte) line_xdyd::x#3 ) - (byte~) line_xdyd::$2 ← (byte) line_xdyd::x#4 + (byte) 1 + (byte~) line_xdyd::$2 ← (byte) line_xdyd::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::x#2 ← (byte~) line_xdyd::$2 (byte~) line_xdyd::$3 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#3 (byte) line_xdyd::e#1 ← (byte~) line_xdyd::$3 @@ -6226,7 +6226,7 @@ line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#7 ) (byte) line_xdyd::x#5 ← phi( line_xdyd::@3/(byte) line_xdyd::x#7 line_xdyd::@5/(byte) line_xdyd::x#2 ) (byte) line_xdyd::x1#2 ← phi( line_xdyd::@3/(byte) line_xdyd::x1#3 line_xdyd::@5/(byte) line_xdyd::x1#4 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x#5 < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return @@ -6242,7 +6242,7 @@ line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 (byte) line_xdyd::xd#3 ← phi( line_xdyd::@5/(byte) line_xdyd::xd#2 ) (byte) line_xdyd::e#4 ← phi( line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#4 ← phi( line_xdyd::@5/(byte) line_xdyd::y#7 ) - (byte~) line_xdyd::$6 ← (byte) line_xdyd::y#4 - (byte) 1 + (byte~) line_xdyd::$6 ← (byte) line_xdyd::y#4 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::y#2 ← (byte~) line_xdyd::$6 (byte~) line_xdyd::$7 ← (byte) line_xdyd::e#4 - (byte) line_xdyd::xd#3 (byte) line_xdyd::e#2 ← (byte~) line_xdyd::$7 @@ -6261,7 +6261,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte~) line_ydxi::$0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#0 ← (byte~) line_ydxi::$0 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 @@ -6292,7 +6292,7 @@ line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 (byte) line_ydxi::xd#3 ← phi( line_ydxi::@1/(byte) line_ydxi::xd#4 ) (byte) line_ydxi::e#3 ← phi( line_ydxi::@1/(byte) line_ydxi::e#5 ) (byte) line_ydxi::y#4 ← phi( line_ydxi::@1/(byte) line_ydxi::y#3 ) - (byte~) line_ydxi::$2 ← (byte) line_ydxi::y#4 + (byte) 1 + (byte~) line_ydxi::$2 ← (byte) line_ydxi::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::y#2 ← (byte~) line_ydxi::$2 (byte~) line_ydxi::$3 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#3 (byte) line_ydxi::e#1 ← (byte~) line_ydxi::$3 @@ -6311,7 +6311,7 @@ line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#7 ) (byte) line_ydxi::y#5 ← phi( line_ydxi::@3/(byte) line_ydxi::y#7 line_ydxi::@5/(byte) line_ydxi::y#2 ) (byte) line_ydxi::y1#2 ← phi( line_ydxi::@3/(byte) line_ydxi::y1#3 line_ydxi::@5/(byte) line_ydxi::y1#4 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y#5 < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return @@ -6327,7 +6327,7 @@ line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 (byte) line_ydxi::yd#3 ← phi( line_ydxi::@5/(byte) line_ydxi::yd#2 ) (byte) line_ydxi::e#4 ← phi( line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#4 ← phi( line_ydxi::@5/(byte) line_ydxi::x#7 ) - (byte~) line_ydxi::$6 ← (byte) line_ydxi::x#4 + (byte) 1 + (byte~) line_ydxi::$6 ← (byte) line_ydxi::x#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::x#2 ← (byte~) line_ydxi::$6 (byte~) line_ydxi::$7 ← (byte) line_ydxi::e#4 - (byte) line_ydxi::yd#3 (byte) line_ydxi::e#2 ← (byte~) line_ydxi::$7 @@ -6346,7 +6346,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte~) line_ydxd::$0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#0 ← (byte~) line_ydxd::$0 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 @@ -6377,7 +6377,7 @@ line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 (byte) line_ydxd::xd#3 ← phi( line_ydxd::@1/(byte) line_ydxd::xd#4 ) (byte) line_ydxd::e#3 ← phi( line_ydxd::@1/(byte) line_ydxd::e#5 ) (byte) line_ydxd::y#4 ← phi( line_ydxd::@1/(byte) line_ydxd::y#3 ) - (byte~) line_ydxd::$2 ← (byte) line_ydxd::y#4 + (byte) 1 + (byte~) line_ydxd::$2 ← (byte) line_ydxd::y#4 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::y#2 ← (byte~) line_ydxd::$2 (byte~) line_ydxd::$3 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#3 (byte) line_ydxd::e#1 ← (byte~) line_ydxd::$3 @@ -6396,7 +6396,7 @@ line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#7 ) (byte) line_ydxd::y#5 ← phi( line_ydxd::@3/(byte) line_ydxd::y#7 line_ydxd::@5/(byte) line_ydxd::y#2 ) (byte) line_ydxd::y1#2 ← phi( line_ydxd::@3/(byte) line_ydxd::y1#3 line_ydxd::@5/(byte) line_ydxd::y1#4 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y#5 < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return @@ -6412,7 +6412,7 @@ line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 (byte) line_ydxd::yd#3 ← phi( line_ydxd::@5/(byte) line_ydxd::yd#2 ) (byte) line_ydxd::e#4 ← phi( line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#4 ← phi( line_ydxd::@5/(byte) line_ydxd::x#7 ) - (byte~) line_ydxd::$6 ← (byte) line_ydxd::x#4 - (byte) 1 + (byte~) line_ydxd::$6 ← (byte) line_ydxd::x#4 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::x#2 ← (byte~) line_ydxd::$6 (byte~) line_ydxd::$7 ← (byte) line_ydxd::e#4 - (byte) line_ydxd::yd#3 (byte) line_ydxd::e#2 ← (byte~) line_ydxd::$7 @@ -6428,18 +6428,18 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte[]) plot_xlo#1 ← phi( line_xdyd::@1/(byte[]) plot_xlo#3 line_xdyi::@1/(byte[]) plot_xlo#4 line_ydxd::@1/(byte[]) plot_xlo#5 line_ydxi::@1/(byte[]) plot_xlo#6 ) (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 ) (byte[]) plot_xhi#1 ← phi( line_xdyd::@1/(byte[]) plot_xhi#3 line_xdyi::@1/(byte[]) plot_xhi#4 line_ydxd::@1/(byte[]) plot_xhi#5 line_ydxi::@1/(byte[]) plot_xhi#6 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 - (byte*) plot::plotter#0 ← (byte~) plot::$4 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + (byte*) plot::plotter#0 ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -6454,8 +6454,8 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 (byte[]) plot_xhi#7 ← phi( main::@3/(byte[]) plot_xhi#17 ) (byte*) BITMAP#4 ← phi( main::@3/(byte*) BITMAP#8 ) (byte[]) plot_xlo#7 ← phi( main::@3/(byte[]) plot_xlo#17 ) - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#35 ← phi( init_plot_tables/(byte[]) plot_yhi#41 init_plot_tables::@2/(byte[]) plot_yhi#17 ) @@ -6466,14 +6466,14 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#4 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#7 init_plot_tables::@2/(byte[]) plot_xlo#8 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits#1 ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 @@ -6486,7 +6486,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#8 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 init_plot_tables::@5/(byte[]) plot_xlo#18 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#4 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 @@ -6497,27 +6497,27 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (byte*) BITMAP#9 ← phi( init_plot_tables::@1/(byte*) BITMAP#1 ) (byte[]) plot_xlo#18 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 ) - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 (byte[]) plot_yhi#8 ← phi( init_plot_tables::@2/(byte[]) plot_yhi#17 ) (byte[]) plot_ylo#8 ← phi( init_plot_tables::@2/(byte[]) plot_ylo#17 ) - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#7 init_plot_tables::@6/(byte[]) plot_yhi#8 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#7 init_plot_tables::@6/(byte[]) plot_ylo#8 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 @@ -6526,7 +6526,7 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#4 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 @@ -6534,7 +6534,7 @@ init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 (byte[]) plot_ylo#18 ← phi( init_plot_tables::@3/(byte[]) plot_ylo#2 ) (byte) init_plot_tables::y#4 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 ) (byte*) init_plot_tables::yoffs#3 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 ) - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word/signed word) 320 (byte*) init_plot_tables::yoffs#1 ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -6549,9 +6549,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#3 ← phi( init_screen/(byte*) SCREEN#4 init_screen::@1/(byte*) SCREEN#3 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#2 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -6562,9 +6562,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -6756,7 +6756,7 @@ Alias (byte) line_ydxd::y#2 = (byte~) line_ydxd::$2 (byte) line_ydxd::y#7 Alias (byte) line_ydxd::e#1 = (byte~) line_ydxd::$3 (byte) line_ydxd::e#4 Alias (byte) line_ydxd::x#2 = (byte~) line_ydxd::$6 Alias (byte) line_ydxd::e#2 = (byte~) line_ydxd::$7 -Alias (byte*) plot::plotter#0 = (byte~) plot::$4 +Alias (byte*) plot::plotter#0 = (byte*~) plot::$4 Alias (byte) init_plot_tables::bits#1 = (byte~) init_plot_tables::$2 Alias (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#4 Alias (byte[]) plot_xlo#18 = (byte[]) plot_xlo#2 @@ -6782,33 +6782,33 @@ CONTROL FLOW GRAPH (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -6834,7 +6834,7 @@ main::@return: scope:[main] from main::@5 return to:@return lines: scope:[lines] from main::@1 - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte[]) plot_bit#20 ← phi( lines/(byte[]) plot_bit#45 lines::@3/(byte[]) plot_bit#20 ) @@ -6847,10 +6847,10 @@ lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#1 ) (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -6978,7 +6978,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::x1#3 ← phi( line_xdyi/(byte) line_xdyi::x1#6 line_xdyi::@2/(byte) line_xdyi::x1#2 ) @@ -6997,7 +6997,7 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#3 (boolean~) line_xdyi::$5 ← (byte) line_xdyi::xd#2 >= (byte) line_xdyi::e#1 if((boolean~) line_xdyi::$5) goto line_xdyi::@2 @@ -7014,12 +7014,12 @@ line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) (byte) line_xdyi::x#5 ← phi( line_xdyi::@3/(byte) line_xdyi::x#2 line_xdyi::@5/(byte) line_xdyi::x#2 ) (byte) line_xdyi::x1#2 ← phi( line_xdyi::@3/(byte) line_xdyi::x1#3 line_xdyi::@5/(byte) line_xdyi::x1#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x#5 < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#2 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -7036,7 +7036,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::x1#3 ← phi( line_xdyd/(byte) line_xdyd::x1#6 line_xdyd::@2/(byte) line_xdyd::x1#2 ) @@ -7055,7 +7055,7 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#3 (boolean~) line_xdyd::$5 ← (byte) line_xdyd::xd#2 >= (byte) line_xdyd::e#1 if((boolean~) line_xdyd::$5) goto line_xdyd::@2 @@ -7072,12 +7072,12 @@ line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) (byte) line_xdyd::x#5 ← phi( line_xdyd::@3/(byte) line_xdyd::x#2 line_xdyd::@5/(byte) line_xdyd::x#2 ) (byte) line_xdyd::x1#2 ← phi( line_xdyd::@3/(byte) line_xdyd::x1#3 line_xdyd::@5/(byte) line_xdyd::x1#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x#5 < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#2 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -7094,7 +7094,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::y1#3 ← phi( line_ydxi/(byte) line_ydxi::y1#6 line_ydxi::@2/(byte) line_ydxi::y1#2 ) @@ -7113,7 +7113,7 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#3 (boolean~) line_ydxi::$5 ← (byte) line_ydxi::yd#2 >= (byte) line_ydxi::e#1 if((boolean~) line_ydxi::$5) goto line_ydxi::@2 @@ -7130,12 +7130,12 @@ line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) (byte) line_ydxi::y#5 ← phi( line_ydxi::@3/(byte) line_ydxi::y#2 line_ydxi::@5/(byte) line_ydxi::y#2 ) (byte) line_ydxi::y1#2 ← phi( line_ydxi::@3/(byte) line_ydxi::y1#3 line_ydxi::@5/(byte) line_ydxi::y1#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y#5 < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#2 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -7152,7 +7152,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::y1#3 ← phi( line_ydxd/(byte) line_ydxd::y1#6 line_ydxd::@2/(byte) line_ydxd::y1#2 ) @@ -7171,7 +7171,7 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#3 (boolean~) line_ydxd::$5 ← (byte) line_ydxd::yd#2 >= (byte) line_ydxd::e#1 if((boolean~) line_ydxd::$5) goto line_ydxd::@2 @@ -7188,12 +7188,12 @@ line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) (byte) line_ydxd::y#5 ← phi( line_ydxd::@3/(byte) line_ydxd::y#2 line_ydxd::@5/(byte) line_ydxd::y#2 ) (byte) line_ydxd::y1#2 ← phi( line_ydxd::@3/(byte) line_ydxd::y1#3 line_ydxd::@5/(byte) line_ydxd::y1#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y#5 < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#2 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -7207,17 +7207,17 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte[]) plot_xlo#1 ← phi( line_xdyd::@1/(byte[]) plot_xlo#26 line_xdyi::@1/(byte[]) plot_xlo#22 line_ydxd::@1/(byte[]) plot_xlo#34 line_ydxi::@1/(byte[]) plot_xlo#30 ) (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 ) (byte[]) plot_xhi#1 ← phi( line_xdyd::@1/(byte[]) plot_xhi#26 line_xdyi::@1/(byte[]) plot_xhi#22 line_ydxd::@1/(byte[]) plot_xhi#34 line_ydxi::@1/(byte[]) plot_xhi#30 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -7226,8 +7226,8 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#35 ← phi( init_plot_tables/(byte[]) plot_yhi#0 init_plot_tables::@2/(byte[]) plot_yhi#17 ) @@ -7238,13 +7238,13 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#0 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#18 ← phi( init_plot_tables/(byte[]) plot_xlo#0 init_plot_tables::@2/(byte[]) plot_xlo#8 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#18 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#18 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#18 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 @@ -7257,29 +7257,29 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#8 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#18 init_plot_tables::@5/(byte[]) plot_xlo#18 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#18 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#7 init_plot_tables::@6/(byte[]) plot_yhi#17 ) (byte[]) plot_ylo#18 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#7 init_plot_tables::@6/(byte[]) plot_ylo#17 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#18 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#18 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 @@ -7288,11 +7288,11 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#2 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -7304,9 +7304,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#1 ← phi( init_screen/(byte*) SCREEN#0 init_screen::@1/(byte*) SCREEN#1 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#0 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -7316,9 +7316,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -7445,33 +7445,33 @@ CONTROL FLOW GRAPH (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -7497,7 +7497,7 @@ main::@return: scope:[main] from main::@5 return to:@return lines: scope:[lines] from main::@1 - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte[]) plot_bit#11 ← phi( lines/(byte[]) plot_bit#45 lines::@3/(byte[]) plot_bit#11 ) @@ -7510,10 +7510,10 @@ lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#1 ) (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -7636,7 +7636,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::x1#2 ← phi( line_xdyi/(byte) line_xdyi::x1#6 line_xdyi::@2/(byte) line_xdyi::x1#2 ) @@ -7655,7 +7655,7 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#3 (boolean~) line_xdyi::$5 ← (byte) line_xdyi::xd#2 >= (byte) line_xdyi::e#1 if((boolean~) line_xdyi::$5) goto line_xdyi::@2 @@ -7663,12 +7663,12 @@ line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x#2 < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#2 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -7680,7 +7680,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::x1#2 ← phi( line_xdyd/(byte) line_xdyd::x1#6 line_xdyd::@2/(byte) line_xdyd::x1#2 ) @@ -7699,7 +7699,7 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#3 (boolean~) line_xdyd::$5 ← (byte) line_xdyd::xd#2 >= (byte) line_xdyd::e#1 if((boolean~) line_xdyd::$5) goto line_xdyd::@2 @@ -7707,12 +7707,12 @@ line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x#2 < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#2 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -7724,7 +7724,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::y1#2 ← phi( line_ydxi/(byte) line_ydxi::y1#6 line_ydxi::@2/(byte) line_ydxi::y1#2 ) @@ -7743,7 +7743,7 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#3 (boolean~) line_ydxi::$5 ← (byte) line_ydxi::yd#2 >= (byte) line_ydxi::e#1 if((boolean~) line_ydxi::$5) goto line_ydxi::@2 @@ -7751,12 +7751,12 @@ line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y#2 < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#2 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -7768,7 +7768,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::y1#2 ← phi( line_ydxd/(byte) line_ydxd::y1#6 line_ydxd::@2/(byte) line_ydxd::y1#2 ) @@ -7787,7 +7787,7 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#3 (boolean~) line_ydxd::$5 ← (byte) line_ydxd::yd#2 >= (byte) line_ydxd::e#1 if((boolean~) line_ydxd::$5) goto line_ydxd::@2 @@ -7795,12 +7795,12 @@ line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y#2 < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#2 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -7814,17 +7814,17 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte[]) plot_xlo#1 ← phi( line_xdyd::@1/(byte[]) plot_xlo#12 line_xdyi::@1/(byte[]) plot_xlo#10 line_ydxd::@1/(byte[]) plot_xlo#16 line_ydxi::@1/(byte[]) plot_xlo#14 ) (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 ) (byte[]) plot_xhi#1 ← phi( line_xdyd::@1/(byte[]) plot_xhi#12 line_xdyi::@1/(byte[]) plot_xhi#10 line_ydxd::@1/(byte[]) plot_xhi#16 line_ydxi::@1/(byte[]) plot_xhi#14 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -7833,8 +7833,8 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#17 ← phi( init_plot_tables/(byte[]) plot_yhi#0 init_plot_tables::@2/(byte[]) plot_yhi#17 ) @@ -7845,51 +7845,51 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#0 init_plot_tables::@2/(byte*) BITMAP#1 ) (byte[]) plot_xlo#18 ← phi( init_plot_tables/(byte[]) plot_xlo#0 init_plot_tables::@2/(byte[]) plot_xlo#18 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#18 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#18 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#18 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#18 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#18 init_plot_tables::@6/(byte[]) plot_yhi#17 ) (byte[]) plot_ylo#18 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#18 init_plot_tables::@6/(byte[]) plot_ylo#17 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#18 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#18 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -7901,9 +7901,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#1 ← phi( init_screen/(byte*) SCREEN#0 init_screen::@1/(byte*) SCREEN#1 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#0 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -7913,9 +7913,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -8052,33 +8052,33 @@ CONTROL FLOW GRAPH (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -8104,7 +8104,7 @@ main::@return: scope:[main] from main::@5 return to:@return lines: scope:[lines] from main::@1 - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte[]) plot_bit#11 ← phi( lines/(byte[]) plot_bit#45 ) @@ -8117,10 +8117,10 @@ lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 ) (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -8243,7 +8243,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::x1#2 ← phi( line_xdyi/(byte) line_xdyi::x1#6 ) @@ -8262,7 +8262,7 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#3 (boolean~) line_xdyi::$5 ← (byte) line_xdyi::xd#2 >= (byte) line_xdyi::e#1 if((boolean~) line_xdyi::$5) goto line_xdyi::@2 @@ -8270,12 +8270,12 @@ line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x#2 < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#2 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -8287,7 +8287,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::x1#2 ← phi( line_xdyd/(byte) line_xdyd::x1#6 ) @@ -8306,7 +8306,7 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#3 (boolean~) line_xdyd::$5 ← (byte) line_xdyd::xd#2 >= (byte) line_xdyd::e#1 if((boolean~) line_xdyd::$5) goto line_xdyd::@2 @@ -8314,12 +8314,12 @@ line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x#2 < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#2 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -8331,7 +8331,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::y1#2 ← phi( line_ydxi/(byte) line_ydxi::y1#6 ) @@ -8350,7 +8350,7 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#3 (boolean~) line_ydxi::$5 ← (byte) line_ydxi::yd#2 >= (byte) line_ydxi::e#1 if((boolean~) line_ydxi::$5) goto line_ydxi::@2 @@ -8358,12 +8358,12 @@ line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y#2 < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#2 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -8375,7 +8375,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::y1#2 ← phi( line_ydxd/(byte) line_ydxd::y1#6 ) @@ -8394,7 +8394,7 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#3 (boolean~) line_ydxd::$5 ← (byte) line_ydxd::yd#2 >= (byte) line_ydxd::e#1 if((boolean~) line_ydxd::$5) goto line_ydxd::@2 @@ -8402,12 +8402,12 @@ line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#2 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y#2 < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#2 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -8421,17 +8421,17 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte[]) plot_xlo#1 ← phi( line_xdyd::@1/(byte[]) plot_xlo#12 line_xdyi::@1/(byte[]) plot_xlo#10 line_ydxd::@1/(byte[]) plot_xlo#16 line_ydxi::@1/(byte[]) plot_xlo#14 ) (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 ) (byte[]) plot_xhi#1 ← phi( line_xdyd::@1/(byte[]) plot_xhi#12 line_xdyi::@1/(byte[]) plot_xhi#10 line_ydxd::@1/(byte[]) plot_xhi#16 line_ydxi::@1/(byte[]) plot_xhi#14 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -8440,8 +8440,8 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#17 ← phi( init_plot_tables/(byte[]) plot_yhi#0 ) @@ -8452,51 +8452,51 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#0 ) (byte[]) plot_xlo#18 ← phi( init_plot_tables/(byte[]) plot_xlo#0 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#18 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#18 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#18 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#18 ← phi( init_plot_tables::@6/(byte[]) plot_yhi#17 ) (byte[]) plot_ylo#18 ← phi( init_plot_tables::@6/(byte[]) plot_ylo#17 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#18 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#18 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -8508,9 +8508,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#1 ← phi( init_screen/(byte*) SCREEN#0 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#0 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -8520,9 +8520,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -8602,33 +8602,33 @@ CONTROL FLOW GRAPH (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -8646,15 +8646,15 @@ main::@return: scope:[main] from main::@5 return to:@return lines: scope:[lines] from main::@1 - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#0 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#0 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -8777,7 +8777,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -8788,7 +8788,7 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 (boolean~) line_xdyi::$5 ← (byte) line_xdyi::xd#5 >= (byte) line_xdyi::e#1 if((boolean~) line_xdyi::$5) goto line_xdyi::@2 @@ -8796,12 +8796,12 @@ line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x#2 < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -8813,7 +8813,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -8824,7 +8824,7 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 (boolean~) line_xdyd::$5 ← (byte) line_xdyd::xd#5 >= (byte) line_xdyd::e#1 if((boolean~) line_xdyd::$5) goto line_xdyd::@2 @@ -8832,12 +8832,12 @@ line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x#2 < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -8849,7 +8849,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -8860,7 +8860,7 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 (boolean~) line_ydxi::$5 ← (byte) line_ydxi::yd#5 >= (byte) line_ydxi::e#1 if((boolean~) line_ydxi::$5) goto line_ydxi::@2 @@ -8868,12 +8868,12 @@ line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y#2 < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -8885,7 +8885,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -8896,7 +8896,7 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 (boolean~) line_ydxd::$5 ← (byte) line_ydxd::yd#5 >= (byte) line_ydxd::e#1 if((boolean~) line_ydxd::$5) goto line_ydxd::@2 @@ -8904,12 +8904,12 @@ line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y#2 < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -8923,17 +8923,17 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte[]) plot_xlo#1 ← phi( line_xdyd::@1/(byte[]) plot_xlo#0 line_xdyi::@1/(byte[]) plot_xlo#0 line_ydxd::@1/(byte[]) plot_xlo#0 line_ydxi::@1/(byte[]) plot_xlo#0 ) (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 ) (byte[]) plot_xhi#1 ← phi( line_xdyd::@1/(byte[]) plot_xhi#0 line_xdyi::@1/(byte[]) plot_xhi#0 line_ydxd::@1/(byte[]) plot_xhi#0 line_ydxi::@1/(byte[]) plot_xhi#0 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -8942,55 +8942,55 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#0 *((byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -9000,9 +9000,9 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -9011,9 +9011,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -9039,33 +9039,33 @@ CONTROL FLOW GRAPH (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -9083,15 +9083,15 @@ main::@return: scope:[main] from main::@5 return to:@return lines: scope:[lines] from main::@1 - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#0 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#0 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -9214,7 +9214,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -9225,7 +9225,7 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 (boolean~) line_xdyi::$5 ← (byte) line_xdyi::xd#5 >= (byte) line_xdyi::e#1 if((boolean~) line_xdyi::$5) goto line_xdyi::@2 @@ -9233,12 +9233,12 @@ line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyi::$9 ← (byte) line_xdyi::x#2 < (byte~) line_xdyi::$8 if((boolean~) line_xdyi::$9) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -9250,7 +9250,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -9261,7 +9261,7 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 (boolean~) line_xdyd::$5 ← (byte) line_xdyd::xd#5 >= (byte) line_xdyd::e#1 if((boolean~) line_xdyd::$5) goto line_xdyd::@2 @@ -9269,12 +9269,12 @@ line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 (boolean~) line_xdyd::$9 ← (byte) line_xdyd::x#2 < (byte~) line_xdyd::$8 if((boolean~) line_xdyd::$9) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -9286,7 +9286,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -9297,7 +9297,7 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 (boolean~) line_ydxi::$5 ← (byte) line_ydxi::yd#5 >= (byte) line_ydxi::e#1 if((boolean~) line_ydxi::$5) goto line_ydxi::@2 @@ -9305,12 +9305,12 @@ line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxi::$9 ← (byte) line_ydxi::y#2 < (byte~) line_ydxi::$8 if((boolean~) line_ydxi::$9) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -9322,7 +9322,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -9333,7 +9333,7 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 (boolean~) line_ydxd::$5 ← (byte) line_ydxd::yd#5 >= (byte) line_ydxd::e#1 if((boolean~) line_ydxd::$5) goto line_ydxd::@2 @@ -9341,12 +9341,12 @@ line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 (boolean~) line_ydxd::$9 ← (byte) line_ydxd::y#2 < (byte~) line_ydxd::$8 if((boolean~) line_ydxd::$9) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -9355,17 +9355,17 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (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 ) (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 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -9374,55 +9374,55 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#0 *((byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -9432,9 +9432,9 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -9443,9 +9443,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -9473,10 +9473,10 @@ Simple Condition (boolean~) line_ydxi::$5 if((byte) line_ydxi::yd#5>=(byte) line Simple Condition (boolean~) line_ydxi::$9 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 Simple Condition (boolean~) line_ydxd::$5 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 Simple Condition (boolean~) line_ydxd::$9 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 -Simple Condition (boolean~) init_plot_tables::$4 if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 -Simple Condition (boolean~) init_plot_tables::$5 if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 -Simple Condition (boolean~) init_plot_tables::$12 if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 -Simple Condition (boolean~) init_plot_tables::$14 if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 +Simple Condition (boolean~) init_plot_tables::$4 if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 +Simple Condition (boolean~) init_plot_tables::$5 if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 +Simple Condition (boolean~) init_plot_tables::$12 if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 +Simple Condition (boolean~) init_plot_tables::$14 if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 Simple Condition (boolean~) init_screen::$1 if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1 Simple Condition (boolean~) init_screen::$3 if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification @@ -9488,33 +9488,33 @@ CONTROL FLOW GRAPH (byte*) SCROLL#0 ← (word) 53270 (byte*) D018#0 ← (word) 53272 (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 - (byte[]) lines_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } - (byte[]) lines_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } - (byte) lines_cnt#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 + (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } + (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } + (byte) lines_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@10 main: scope:[main] from @10 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -9532,15 +9532,15 @@ main::@return: scope:[main] from main::@5 return to:@return lines: scope:[lines] from main::@1 - (byte) lines::l#0 ← (byte) 0 + (byte) lines::l#0 ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (byte[]) lines_x#0 *idx (byte~) lines::$1 (byte~) lines::$3 ← (byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (byte[]) lines_y#0 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -9655,7 +9655,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -9666,18 +9666,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -9689,7 +9689,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -9700,18 +9700,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -9723,7 +9723,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -9734,18 +9734,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -9757,7 +9757,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -9768,18 +9768,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -9788,17 +9788,17 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (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 ) (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 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -9807,51 +9807,51 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#0 *((byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -9861,9 +9861,9 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word/signed word) 8192 if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1 to:init_screen::@3 init_screen::@3: scope:[init_screen] from init_screen::@1 @@ -9871,9 +9871,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word/signed word) 1024 if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 @@ -9910,7 +9910,7 @@ Constant (const byte[]) lines_y#0 = { 10, 40, 60, 80, 110, 80, 60, 40, 10 } Constant (const byte) lines_cnt#0 = 8 Constant (const byte) lines::l#0 = 0 Constant (const byte*) plot::plotter_x#0 = 0 -Constant (const byte*) plot::plotter_y#0 = 0 +Constant (const word) plot::plotter_y#0 = 0 Constant (const byte) init_plot_tables::bits#0 = 128 Constant (const byte) init_plot_tables::x#0 = 0 Constant (const byte) init_plot_tables::bits#2 = 128 @@ -9921,13 +9921,13 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@10 main: scope:[main] from @10 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (const byte) BMM#0 | (const byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (const byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((const byte*) D011#0) ← (byte~) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -9949,10 +9949,10 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (const byte[]) lines_x#0 *idx (byte~) lines::$1 (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (const byte[]) lines_y#0 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -10067,7 +10067,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -10078,18 +10078,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -10101,7 +10101,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -10112,18 +10112,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -10135,7 +10135,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -10146,18 +10146,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -10169,7 +10169,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -10180,18 +10180,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -10205,10 +10205,10 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -10221,18 +10221,18 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (const byte*) BITMAP#0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 @@ -10241,22 +10241,22 @@ init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -10266,9 +10266,9 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (const byte*) BITMAP#0 + (word) 8192 + (byte*~) init_screen::$0 ← (const byte*) BITMAP#0 + (word/signed word) 8192 if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1 to:init_screen::@3 init_screen::@3: scope:[init_screen] from init_screen::@1 @@ -10276,9 +10276,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (const byte*) SCREEN#0 + (word) 1024 + (byte*~) init_screen::$2 ← (const byte*) SCREEN#0 + (word/signed word) 1024 if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 @@ -10300,12 +10300,12 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@10 main: scope:[main] from @10 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$1 ← (const byte) main::$0 | (const byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((const byte*) D011#0) ← (byte~) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -10327,10 +10327,10 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (const byte[]) lines_x#0 *idx (byte~) lines::$1 (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (const byte[]) lines_y#0 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -10445,7 +10445,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -10456,18 +10456,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -10479,7 +10479,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -10490,18 +10490,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -10513,7 +10513,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -10524,18 +10524,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -10547,7 +10547,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -10558,18 +10558,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -10583,10 +10583,10 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -10599,17 +10599,17 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 @@ -10618,22 +10618,22 @@ init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -10642,7 +10642,7 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@3 @@ -10650,7 +10650,7 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -10668,11 +10668,11 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@10 main: scope:[main] from @10 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 - (byte~) main::$2 ← (const byte) main::$1 | (byte) 3 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 + (byte~) main::$2 ← (const byte) main::$1 | (byte/signed byte/word/signed word) 3 *((const byte*) D011#0) ← (byte~) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -10694,10 +10694,10 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (const byte[]) lines_x#0 *idx (byte~) lines::$1 (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (const byte[]) lines_y#0 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -10812,7 +10812,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -10823,18 +10823,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -10846,7 +10846,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -10857,18 +10857,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -10880,7 +10880,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -10891,18 +10891,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -10914,7 +10914,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -10925,18 +10925,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -10950,10 +10950,10 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -10966,17 +10966,17 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 @@ -10985,22 +10985,22 @@ init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -11009,7 +11009,7 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@3 @@ -11017,7 +11017,7 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -11035,10 +11035,10 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@10 main: scope:[main] from @10 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 *((const byte*) D011#0) ← (const byte) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -11060,10 +11060,10 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$1 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$2 ← (const byte[]) lines_x#0 *idx (byte~) lines::$1 (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte) 1 + (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$5 ← (const byte[]) lines_y#0 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 @@ -11178,7 +11178,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -11189,18 +11189,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -11212,7 +11212,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -11223,18 +11223,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -11246,7 +11246,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -11257,18 +11257,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -11280,7 +11280,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -11291,18 +11291,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -11316,10 +11316,10 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -11332,17 +11332,17 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 @@ -11351,22 +11351,22 @@ init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -11375,7 +11375,7 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@3 @@ -11383,7 +11383,7 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -11423,10 +11423,10 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@10 main: scope:[main] from @10 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 *((const byte*) D011#0) ← (const byte) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -11449,10 +11449,10 @@ lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 (byte~) lines::$1 ← (byte) lines::l#2 - (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte~) lines::$1 + (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte~) lines::$1 (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 (byte~) lines::$4 ← (byte) lines::l#2 - (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte~) lines::$4 + (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 (byte) line::y0#0 ← (byte~) lines::$3 @@ -11566,7 +11566,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -11577,18 +11577,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -11600,7 +11600,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -11611,18 +11611,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -11634,7 +11634,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -11645,18 +11645,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -11668,7 +11668,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -11679,18 +11679,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -11704,10 +11704,10 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -11720,17 +11720,17 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 @@ -11739,22 +11739,22 @@ init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -11763,7 +11763,7 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@3 @@ -11771,7 +11771,7 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -11811,10 +11811,10 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@10 main: scope:[main] from @10 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 *((const byte*) D011#0) ← (const byte) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -11835,10 +11835,10 @@ lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 (byte~) lines::$1 ← (byte) lines::l#2 - (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte~) lines::$1 + (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte~) lines::$1 (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 (byte~) lines::$4 ← (byte) lines::l#2 - (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte~) lines::$4 + (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte~) lines::$4 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 (byte) line::y0#0 ← (byte~) lines::$3 @@ -11952,7 +11952,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -11963,18 +11963,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -11986,7 +11986,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -11997,18 +11997,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -12020,7 +12020,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -12031,18 +12031,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -12054,7 +12054,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -12065,18 +12065,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -12090,10 +12090,10 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -12106,39 +12106,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@3 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -12147,13 +12147,13 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -12224,10 +12224,10 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@10 main: scope:[main] from @10 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 *((const byte*) D011#0) ← (const byte) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -12247,9 +12247,9 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 + (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 + (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 (byte) line::y0#0 ← (byte~) lines::$3 @@ -12363,7 +12363,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -12374,18 +12374,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -12397,7 +12397,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -12408,18 +12408,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -12431,7 +12431,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -12442,18 +12442,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -12465,7 +12465,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -12476,18 +12476,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -12501,10 +12501,10 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -12517,39 +12517,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@3 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -12558,13 +12558,13 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -12727,8 +12727,8 @@ Inlining constant with var siblings (const byte) lines::l#0 Inlining constant with var siblings (const byte) lines::l#0 Inlining constant with var siblings (const byte*) plot::plotter_x#0 Inlining constant with var siblings (const byte*) plot::plotter_x#0 -Inlining constant with var siblings (const byte*) plot::plotter_y#0 -Inlining constant with var siblings (const byte*) plot::plotter_y#0 +Inlining constant with var siblings (const word) plot::plotter_y#0 +Inlining constant with var siblings (const word) plot::plotter_y#0 Inlining constant with var siblings (const byte) init_plot_tables::bits#0 Inlining constant with var siblings (const byte) init_plot_tables::bits#0 Inlining constant with var siblings (const byte) init_plot_tables::bits#0 @@ -12746,31 +12746,31 @@ Inlining constant with var siblings (const byte*) init_screen::b#0 Inlining constant with var siblings (const byte*) init_screen::b#0 Inlining constant with var siblings (const byte*) init_screen::c#0 Inlining constant with var siblings (const byte*) init_screen::c#0 -Constant inlined init_plot_tables::y#0 = (byte) 0 -Constant inlined init_plot_tables::x#0 = (byte) 0 -Constant inlined init_plot_tables::yoffs#0 = (byte) 0 +Constant inlined init_plot_tables::bits#2 = (byte/word/signed word) 128 +Constant inlined init_plot_tables::bits#0 = (byte/word/signed word) 128 +Constant inlined plot::plotter_y#0 = (byte/signed byte/word/signed word) 0 +Constant inlined plot::plotter_x#0 = (byte/signed byte/word/signed word) 0 +Constant inlined init_screen::$2 = (const byte*) SCREEN#0+(word/signed word) 1024 Constant inlined main::$1 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0 Constant inlined init_plot_tables::$1 = >(const byte*) BITMAP#0 -Constant inlined main::$2 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 +Constant inlined lines::l#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::$2 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 Constant inlined main::$0 = (const byte) BMM#0|(const byte) DEN#0 -Constant inlined plot::plotter_y#0 = (byte) 0 -Constant inlined init_screen::$2 = (const byte*) SCREEN#0+(word) 1024 +Constant inlined init_plot_tables::y#0 = (byte/signed byte/word/signed word) 0 +Constant inlined init_plot_tables::yoffs#0 = (byte/signed byte/word/signed word) 0 +Constant inlined init_plot_tables::x#0 = (byte/signed byte/word/signed word) 0 Constant inlined init_screen::c#0 = (const byte*) SCREEN#0 -Constant inlined init_plot_tables::bits#0 = (byte) 128 -Constant inlined init_plot_tables::bits#2 = (byte) 128 -Constant inlined lines::l#0 = (byte) 0 -Constant inlined plot::plotter_x#0 = (byte) 0 -Constant inlined init_screen::$0 = (const byte*) BITMAP#0+(word) 8192 Constant inlined init_screen::b#0 = (const byte*) BITMAP#0 +Constant inlined init_screen::$0 = (const byte*) BITMAP#0+(word/signed word) 8192 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from to:@10 main: scope:[main] from @10 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 - *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -12788,11 +12788,11 @@ main::@return: scope:[main] from main::@5 lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 - (byte) lines::l#2 ← phi( lines/(byte) 0 lines::@3/(byte) lines::l#1 ) + (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@3/(byte) lines::l#1 ) (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 + (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 + (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 (byte) line::y0#0 ← (byte~) lines::$3 @@ -12906,7 +12906,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) @@ -12917,18 +12917,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 to:line_xdyi::@3 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 to:line_xdyi::@return line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 to:line_xdyi::@2 line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -12940,7 +12940,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) @@ -12951,18 +12951,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 to:line_xdyd::@3 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 to:line_xdyd::@return line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 to:line_xdyd::@2 line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -12974,7 +12974,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) @@ -12985,18 +12985,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 to:line_ydxi::@3 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 to:line_ydxi::@return line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 to:line_ydxi::@2 line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -13008,7 +13008,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) @@ -13019,18 +13019,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 to:line_ydxd::@3 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 to:line_ydxd::@return line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 to:line_ydxd::@2 line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -13040,14 +13040,14 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (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 ) (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 ) (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 + (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -13058,41 +13058,41 @@ plot::@return: scope:[plot] from plot init_plot_tables: scope:[init_plot_tables] from main::@3 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) - (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (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 ) + (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 ) + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 - (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) 128 ) + (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte/word/signed word) 128 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@3 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) - (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) + (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 ) + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -13101,15 +13101,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 + if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 + if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 return @@ -13126,13 +13126,13 @@ FINAL SYMBOL TABLE (byte*) BGCOL (const byte*) BGCOL#0 = (word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 = (word) 8192 +(const byte*) BITMAP#0 = (word/signed word) 8192 (byte) BMM -(const byte) BMM#0 = (byte) 32 +(const byte) BMM#0 = (byte/signed byte/word/signed word) 32 (byte*) COLS (const byte*) COLS#0 = (word) 55296 (byte) CSEL -(const byte) CSEL#0 = (byte) 8 +(const byte) CSEL#0 = (byte/signed byte/word/signed word) 8 (byte*) D011 (const byte*) D011#0 = (word) 53265 (byte*) D016 @@ -13140,19 +13140,19 @@ FINAL SYMBOL TABLE (byte*) D018 (const byte*) D018#0 = (word) 53272 (byte) DEN -(const byte) DEN#0 = (byte) 16 +(const byte) DEN#0 = (byte/signed byte/word/signed word) 16 (byte) ECM -(const byte) ECM#0 = (byte) 64 +(const byte) ECM#0 = (byte/signed byte/word/signed word) 64 (byte*) FGCOL (const byte*) FGCOL#0 = (word) 53281 (byte) MCM -(const byte) MCM#0 = (byte) 16 +(const byte) MCM#0 = (byte/signed byte/word/signed word) 16 (byte) RSEL -(const byte) RSEL#0 = (byte) 8 +(const byte) RSEL#0 = (byte/signed byte/word/signed word) 8 (byte) RST8 -(const byte) RST8#0 = (byte) 128 +(const byte) RST8#0 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte*) SCROLL (const byte*) SCROLL#0 = (word) 53270 (void()) init_plot_tables() @@ -13389,11 +13389,11 @@ FINAL SYMBOL TABLE (byte) lines::l#1 (byte) lines::l#2 (byte) lines_cnt -(const byte) lines_cnt#0 = (byte) 8 +(const byte) lines_cnt#0 = (byte/signed byte/word/signed word) 8 (byte[]) lines_x -(const byte[]) lines_x#0 = { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } +(const byte[]) lines_x#0 = { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } (byte[]) lines_y -(const byte[]) lines_y#0 = { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } +(const byte[]) lines_y#0 = { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } (void()) main() (label) main::@1 (label) main::@3 @@ -13412,9 +13412,9 @@ FINAL SYMBOL TABLE (byte*) plot::plotter_x (byte*) plot::plotter_x#1 (byte*) plot::plotter_x#2 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#1 -(byte*) plot::plotter_y#2 +(word) plot::plotter_y +(word) plot::plotter_y#1 +(word) plot::plotter_y#2 (byte) plot::x (byte) plot::x#0 (byte) plot::x#1 @@ -13428,15 +13428,15 @@ FINAL SYMBOL TABLE (byte) plot::y#3 (byte) plot::y#4 (byte[]) plot_bit -(const byte[]) plot_bit#0 = (word) 5120 +(const byte[]) plot_bit#0 = (word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 = (word) 4352 +(const byte[]) plot_xhi#0 = (word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 = (word) 4096 +(const byte[]) plot_xlo#0 = (word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 = (word) 4864 +(const byte[]) plot_yhi#0 = (word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 = (word) 4608 +(const byte[]) plot_ylo#0 = (word/signed word) 4608 Block Sequence Planned @begin @10 @end main main::@3 main::@1 main::@5 main::@return lines lines::@1 lines::@3 lines::@return line line::@15 line::@16 line::@17 line::@return line::@3 line::@2 line::@20 line::@6 line::@1 line::@23 line::@24 line::@10 line::@9 line::@27 line::@13 line_ydxi line_ydxi::@1 line_ydxi::@5 line_ydxi::@3 line_ydxi::@2 line_ydxi::@return plot plot::@return line_xdyi line_xdyi::@1 line_xdyi::@5 line_xdyi::@3 line_xdyi::@2 line_xdyi::@return line_ydxd line_ydxd::@1 line_ydxd::@5 line_ydxd::@3 line_ydxd::@2 line_ydxd::@return line_xdyd line_xdyd::@1 line_xdyd::@5 line_xdyd::@3 line_xdyd::@2 line_xdyd::@return init_plot_tables init_plot_tables::@1 init_plot_tables::@5 init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@7 init_plot_tables::@4 init_plot_tables::@return init_screen init_screen::@1 init_screen::@2 init_screen::@return Added new block during phi lifting lines::@4(between lines::@3 and lines::@1) @@ -13463,10 +13463,10 @@ CONTROL FLOW GRAPH - PHI LIFTED to:@end @end: scope:[] from @10 main: scope:[main] from @10 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 - *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@3 main::@3: scope:[main] from main @@ -13484,11 +13484,11 @@ main::@return: scope:[main] from main::@5 lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@4 - (byte) lines::l#2 ← phi( lines/(byte) 0 lines::@4/(byte~) lines::l#4 ) + (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@4/(byte~) lines::l#4 ) (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 + (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 + (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 (byte) line::x0#0 ← (byte~) lines::$0 (byte) line::x1#0 ← (byte~) lines::$2 (byte) line::y0#0 ← (byte~) lines::$3 @@ -13645,7 +13645,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 (byte) line_ydxi::y#6 ← phi( line::@13/(byte~) line_ydxi::y#8 line::@3/(byte~) line_ydxi::y#9 ) (byte) line_ydxi::x#5 ← phi( line::@13/(byte~) line_ydxi::x#8 line::@3/(byte~) line_ydxi::x#9 ) (byte) line_ydxi::xd#2 ← phi( line::@13/(byte~) line_ydxi::xd#7 line::@3/(byte~) line_ydxi::xd#8 ) - (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 + (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 (byte~) line_ydxi::x#10 ← (byte) line_ydxi::x#5 (byte~) line_ydxi::y#10 ← (byte) line_ydxi::y#6 (byte~) line_ydxi::e#7 ← (byte) line_ydxi::e#0 @@ -13661,12 +13661,12 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@6 call plot param-assignment to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 + (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@7 to:line_ydxi::@3 line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 + (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 (byte~) line_ydxi::x#12 ← (byte) line_ydxi::x#2 (byte~) line_ydxi::e#9 ← (byte) line_ydxi::e#2 @@ -13674,7 +13674,7 @@ line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@7 (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte~) line_ydxi::e#9 line_ydxi::@7/(byte~) line_ydxi::e#10 ) (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte~) line_ydxi::x#12 line_ydxi::@7/(byte~) line_ydxi::x#13 ) - (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 + (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@6 to:line_ydxi::@return line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -13693,14 +13693,14 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte~) plot::y#5 line_xdyi::@1/(byte~) plot::y#6 line_ydxd::@1/(byte~) plot::y#7 line_ydxi::@1/(byte~) plot::y#8 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte~) plot::x#5 line_xdyi::@1/(byte~) plot::x#6 line_ydxd::@1/(byte~) plot::x#7 line_ydxi::@1/(byte~) plot::x#8 ) (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 + (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -13714,7 +13714,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 (byte) line_xdyi::y#5 ← phi( line::@17/(byte~) line_xdyi::y#8 line::@27/(byte~) line_xdyi::y#9 ) (byte) line_xdyi::x#6 ← phi( line::@17/(byte~) line_xdyi::x#8 line::@27/(byte~) line_xdyi::x#9 ) (byte) line_xdyi::yd#2 ← phi( line::@17/(byte~) line_xdyi::yd#7 line::@27/(byte~) line_xdyi::yd#8 ) - (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 + (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 (byte~) line_xdyi::x#10 ← (byte) line_xdyi::x#6 (byte~) line_xdyi::y#10 ← (byte) line_xdyi::y#5 (byte~) line_xdyi::e#7 ← (byte) line_xdyi::e#0 @@ -13730,12 +13730,12 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@6 call plot param-assignment to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 + (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@7 to:line_xdyi::@3 line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 + (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 (byte~) line_xdyi::y#12 ← (byte) line_xdyi::y#2 (byte~) line_xdyi::e#9 ← (byte) line_xdyi::e#2 @@ -13743,7 +13743,7 @@ line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@7 (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte~) line_xdyi::e#9 line_xdyi::@7/(byte~) line_xdyi::e#10 ) (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte~) line_xdyi::y#12 line_xdyi::@7/(byte~) line_xdyi::y#13 ) - (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 + (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@6 to:line_xdyi::@return line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -13764,7 +13764,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 (byte) line_ydxd::y#6 ← phi( line::@10/(byte~) line_ydxd::y#8 line::@6/(byte~) line_ydxd::y#9 ) (byte) line_ydxd::x#5 ← phi( line::@10/(byte~) line_ydxd::x#8 line::@6/(byte~) line_ydxd::x#9 ) (byte) line_ydxd::xd#2 ← phi( line::@10/(byte~) line_ydxd::xd#7 line::@6/(byte~) line_ydxd::xd#8 ) - (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 + (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 (byte~) line_ydxd::x#10 ← (byte) line_ydxd::x#5 (byte~) line_ydxd::y#10 ← (byte) line_ydxd::y#6 (byte~) line_ydxd::e#7 ← (byte) line_ydxd::e#0 @@ -13780,12 +13780,12 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@6 call plot param-assignment to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 + (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@7 to:line_ydxd::@3 line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 + (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 (byte~) line_ydxd::x#12 ← (byte) line_ydxd::x#2 (byte~) line_ydxd::e#9 ← (byte) line_ydxd::e#2 @@ -13793,7 +13793,7 @@ line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@7 (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte~) line_ydxd::e#9 line_ydxd::@7/(byte~) line_ydxd::e#10 ) (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte~) line_ydxd::x#12 line_ydxd::@7/(byte~) line_ydxd::x#13 ) - (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 + (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@6 to:line_ydxd::@return line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -13814,7 +13814,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 (byte) line_xdyd::y#5 ← phi( line::@20/(byte~) line_xdyd::y#8 line::@24/(byte~) line_xdyd::y#9 ) (byte) line_xdyd::x#6 ← phi( line::@20/(byte~) line_xdyd::x#8 line::@24/(byte~) line_xdyd::x#9 ) (byte) line_xdyd::yd#2 ← phi( line::@20/(byte~) line_xdyd::yd#7 line::@24/(byte~) line_xdyd::yd#8 ) - (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 + (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 (byte~) line_xdyd::x#10 ← (byte) line_xdyd::x#6 (byte~) line_xdyd::y#10 ← (byte) line_xdyd::y#5 (byte~) line_xdyd::e#7 ← (byte) line_xdyd::e#0 @@ -13830,12 +13830,12 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@6 call plot param-assignment to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 + (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@7 to:line_xdyd::@3 line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 + (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 (byte~) line_xdyd::y#12 ← (byte) line_xdyd::y#2 (byte~) line_xdyd::e#9 ← (byte) line_xdyd::e#2 @@ -13843,7 +13843,7 @@ line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@7 (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte~) line_xdyd::e#9 line_xdyd::@7/(byte~) line_xdyd::e#10 ) (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte~) line_xdyd::y#12 line_xdyd::@7/(byte~) line_xdyd::y#13 ) - (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 + (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@6 to:line_xdyd::@return line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -13861,42 +13861,42 @@ line_xdyd::@7: scope:[line_xdyd] from line_xdyd::@5 init_plot_tables: scope:[init_plot_tables] from main::@3 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@9 - (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) - (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) + (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 to:init_plot_tables::@5 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_plot_tables::@5 - (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte) 128 ) + (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte/word/signed word) 128 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@9 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@9 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@11 init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/(byte) 0 ) - (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte) 0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) + (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@12 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@12 to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 (byte*~) init_plot_tables::yoffs#7 ← (byte*) init_plot_tables::yoffs#1 to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@12 init_plot_tables::@7 (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@12/(byte*~) init_plot_tables::yoffs#6 init_plot_tables::@7/(byte*~) init_plot_tables::yoffs#7 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@11 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@11 to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -13919,15 +13919,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@5 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@5/(byte*~) init_screen::b#3 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@5 + if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@5 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@6 (byte*) init_screen::c#2 ← phi( init_screen::@6/(byte*~) init_screen::c#3 init_screen::@1/(const byte*) SCREEN#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@6 + if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@6 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 return @@ -13977,10 +13977,10 @@ CONTROL FLOW GRAPH - LIVE RANGES FOUND to:@end @end: scope:[] from @10 main: scope:[main] from @10 - [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] - [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] - [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] - [4] *((const byte*) D018#0) ← (byte) 24 [ ] + [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] + [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] + [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] + [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] [5] call init_screen param-assignment [ ] to:main::@3 main::@3: scope:[main] from main @@ -13999,11 +13999,11 @@ lines: scope:[lines] from main::@1 [10] phi() [ ] to:lines::@1 lines::@1: scope:[lines] from lines lines::@4 - [11] (byte) lines::l#2 ← phi( lines/(byte) 0 lines::@4/(byte~) lines::l#4 ) [ lines::l#2 ] + [11] (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@4/(byte~) lines::l#4 ) [ lines::l#2 ] [12] (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 ] - [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] + [13] (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 ] [14] (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 ] - [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] + [15] (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 ] [16] (byte) line::x0#0 ← (byte~) lines::$0 [ lines::l#2 lines::$2 lines::$3 lines::$5 line::x0#0 ] [17] (byte) line::x1#0 ← (byte~) lines::$2 [ lines::l#2 lines::$3 lines::$5 line::x0#0 line::x1#0 ] [18] (byte) line::y0#0 ← (byte~) lines::$3 [ lines::l#2 lines::$5 line::x0#0 line::x1#0 line::y0#0 ] @@ -14160,7 +14160,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 [127] (byte) line_ydxi::y#6 ← phi( line::@13/(byte~) line_ydxi::y#8 line::@3/(byte~) line_ydxi::y#9 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] [127] (byte) line_ydxi::x#5 ← phi( line::@13/(byte~) line_ydxi::x#8 line::@3/(byte~) line_ydxi::x#9 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] [127] (byte) line_ydxi::xd#2 ← phi( line::@13/(byte~) line_ydxi::xd#7 line::@3/(byte~) line_ydxi::xd#8 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] - [128] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] + [128] (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 ] [129] (byte~) line_ydxi::x#10 ← (byte) line_ydxi::x#5 [ line_ydxi::xd#2 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 line_ydxi::x#10 ] [130] (byte~) line_ydxi::y#10 ← (byte) line_ydxi::y#6 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 line_ydxi::x#10 line_ydxi::y#10 ] [131] (byte~) line_ydxi::e#7 ← (byte) line_ydxi::e#0 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#10 line_ydxi::y#10 line_ydxi::e#7 ] @@ -14176,12 +14176,12 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@6 [137] call plot param-assignment [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - [138] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] + [138] (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 ] [139] (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 ] [140] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@7 [ 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 - [141] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] + [141] (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 ] [142] (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 ] [143] (byte~) line_ydxi::x#12 ← (byte) line_ydxi::x#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#2 line_ydxi::x#12 ] [144] (byte~) line_ydxi::e#9 ← (byte) line_ydxi::e#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#12 line_ydxi::e#9 ] @@ -14189,7 +14189,7 @@ line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@7 [145] (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte~) line_ydxi::e#9 line_ydxi::@7/(byte~) line_ydxi::e#10 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#6 line_ydxi::e#6 ] [145] (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte~) line_ydxi::x#12 line_ydxi::@7/(byte~) line_ydxi::x#13 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#6 line_ydxi::e#6 ] - [146] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#6 line_ydxi::e#6 line_ydxi::$8 ] + [146] (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::y#2 line_ydxi::x#6 line_ydxi::e#6 line_ydxi::$8 ] [147] if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@6 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#6 line_ydxi::e#6 ] to:line_ydxi::@return line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -14208,14 +14208,14 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 [154] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte~) plot::y#5 line_xdyi::@1/(byte~) plot::y#6 line_ydxd::@1/(byte~) plot::y#7 line_ydxi::@1/(byte~) plot::y#8 ) [ plot::x#4 plot::y#4 ] [154] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte~) plot::x#5 line_xdyi::@1/(byte~) plot::x#6 line_ydxd::@1/(byte~) plot::x#7 line_ydxi::@1/(byte~) plot::x#8 ) [ plot::x#4 plot::y#4 ] [155] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] - [156] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] + [156] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] [157] (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 ] [158] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] [159] (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 ] - [160] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] + [160] (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 ] [161] (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 ] - [162] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] - [163] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] + [162] (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 ] + [163] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] [164] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] [165] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] [166] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] @@ -14229,7 +14229,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 [168] (byte) line_xdyi::y#5 ← phi( line::@17/(byte~) line_xdyi::y#8 line::@27/(byte~) line_xdyi::y#9 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] [168] (byte) line_xdyi::x#6 ← phi( line::@17/(byte~) line_xdyi::x#8 line::@27/(byte~) line_xdyi::x#9 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] [168] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte~) line_xdyi::yd#7 line::@27/(byte~) line_xdyi::yd#8 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [169] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] + [169] (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 ] [170] (byte~) line_xdyi::x#10 ← (byte) line_xdyi::x#6 [ line_xdyi::yd#2 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 line_xdyi::x#10 ] [171] (byte~) line_xdyi::y#10 ← (byte) line_xdyi::y#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 line_xdyi::x#10 line_xdyi::y#10 ] [172] (byte~) line_xdyi::e#7 ← (byte) line_xdyi::e#0 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#10 line_xdyi::y#10 line_xdyi::e#7 ] @@ -14245,12 +14245,12 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@6 [178] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - [179] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] + [179] (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 ] [180] (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 ] [181] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@7 [ 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 - [182] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] + [182] (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 ] [183] (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 ] [184] (byte~) line_xdyi::y#12 ← (byte) line_xdyi::y#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#2 line_xdyi::y#12 ] [185] (byte~) line_xdyi::e#9 ← (byte) line_xdyi::e#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#12 line_xdyi::e#9 ] @@ -14258,7 +14258,7 @@ line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@7 [186] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte~) line_xdyi::e#9 line_xdyi::@7/(byte~) line_xdyi::e#10 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] [186] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte~) line_xdyi::y#12 line_xdyi::@7/(byte~) line_xdyi::y#13 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] - [187] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] + [187] (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 ] [188] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@6 [ 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 @@ -14279,7 +14279,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 [195] (byte) line_ydxd::y#6 ← phi( line::@10/(byte~) line_ydxd::y#8 line::@6/(byte~) line_ydxd::y#9 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] [195] (byte) line_ydxd::x#5 ← phi( line::@10/(byte~) line_ydxd::x#8 line::@6/(byte~) line_ydxd::x#9 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] [195] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte~) line_ydxd::xd#7 line::@6/(byte~) line_ydxd::xd#8 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [196] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] + [196] (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 ] [197] (byte~) line_ydxd::x#10 ← (byte) line_ydxd::x#5 [ line_ydxd::xd#2 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 line_ydxd::x#10 ] [198] (byte~) line_ydxd::y#10 ← (byte) line_ydxd::y#6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 line_ydxd::x#10 line_ydxd::y#10 ] [199] (byte~) line_ydxd::e#7 ← (byte) line_ydxd::e#0 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#10 line_ydxd::y#10 line_ydxd::e#7 ] @@ -14295,12 +14295,12 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@6 [205] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - [206] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] + [206] (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 ] [207] (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 ] [208] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@7 [ 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 - [209] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] + [209] (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 ] [210] (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 ] [211] (byte~) line_ydxd::x#12 ← (byte) line_ydxd::x#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#2 line_ydxd::x#12 ] [212] (byte~) line_ydxd::e#9 ← (byte) line_ydxd::e#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#12 line_ydxd::e#9 ] @@ -14308,7 +14308,7 @@ line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@7 [213] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte~) line_ydxd::e#9 line_ydxd::@7/(byte~) line_ydxd::e#10 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 ] [213] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte~) line_ydxd::x#12 line_ydxd::@7/(byte~) line_ydxd::x#13 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 ] - [214] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 line_ydxd::$8 ] + [214] (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::y#2 line_ydxd::x#6 line_ydxd::e#6 line_ydxd::$8 ] [215] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 ] to:line_ydxd::@return line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -14329,7 +14329,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 [222] (byte) line_xdyd::y#5 ← phi( line::@20/(byte~) line_xdyd::y#8 line::@24/(byte~) line_xdyd::y#9 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] [222] (byte) line_xdyd::x#6 ← phi( line::@20/(byte~) line_xdyd::x#8 line::@24/(byte~) line_xdyd::x#9 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] [222] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte~) line_xdyd::yd#7 line::@24/(byte~) line_xdyd::yd#8 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [223] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] + [223] (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 ] [224] (byte~) line_xdyd::x#10 ← (byte) line_xdyd::x#6 [ line_xdyd::yd#2 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 line_xdyd::x#10 ] [225] (byte~) line_xdyd::y#10 ← (byte) line_xdyd::y#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 line_xdyd::x#10 line_xdyd::y#10 ] [226] (byte~) line_xdyd::e#7 ← (byte) line_xdyd::e#0 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#10 line_xdyd::y#10 line_xdyd::e#7 ] @@ -14345,12 +14345,12 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@6 [232] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - [233] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] + [233] (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 ] [234] (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 ] [235] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@7 [ 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 - [236] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] + [236] (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 ] [237] (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 ] [238] (byte~) line_xdyd::y#12 ← (byte) line_xdyd::y#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#2 line_xdyd::y#12 ] [239] (byte~) line_xdyd::e#9 ← (byte) line_xdyd::e#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#12 line_xdyd::e#9 ] @@ -14358,7 +14358,7 @@ line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@7 [240] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte~) line_xdyd::e#9 line_xdyd::@7/(byte~) line_xdyd::e#10 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] [240] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte~) line_xdyd::y#12 line_xdyd::@7/(byte~) line_xdyd::y#13 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] - [241] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] + [241] (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 ] [242] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@6 [ 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 @@ -14377,42 +14377,42 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 [249] phi() [ ] to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@9 - [250] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [250] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [251] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] + [250] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [250] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [251] (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 ] [252] *((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 ] [253] *((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 ] [254] *((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 ] - [255] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] - [256] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [255] (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 ] + [256] 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 ] to:init_plot_tables::@5 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_plot_tables::@5 - [257] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] + [257] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] [258] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] - [259] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@9 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] + [259] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@9 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@11 init_plot_tables::@2 - [260] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [260] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [261] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] + [260] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [260] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [261] (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 ] [262] (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 ] [263] (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 ] [264] *((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 ] [265] (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 ] [266] *((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 ] - [267] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] - [268] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@12 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [267] (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 ] + [268] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@12 [ 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 - [269] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] + [269] (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 ] [270] (byte*~) init_plot_tables::yoffs#7 ← (byte*) init_plot_tables::yoffs#1 [ init_plot_tables::y#2 init_plot_tables::yoffs#7 ] to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@12 init_plot_tables::@7 [271] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@12/(byte*~) init_plot_tables::yoffs#6 init_plot_tables::@7/(byte*~) init_plot_tables::yoffs#7 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] [272] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] - [273] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@11 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] + [273] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@11 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 [274] return [ ] @@ -14436,15 +14436,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@5 [282] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@5/(byte*~) init_screen::b#3 ) [ init_screen::b#2 ] - [283] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] + [283] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] [284] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] - [285] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@5 [ init_screen::b#1 ] + [285] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@5 [ init_screen::b#1 ] to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@6 [286] (byte*) init_screen::c#2 ← phi( init_screen::@6/(byte*~) init_screen::c#3 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] - [287] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] + [287] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] [288] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] - [289] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@6 [ init_screen::c#1 ] + [289] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@6 [ init_screen::c#1 ] to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 [290] return [ ] @@ -14595,10 +14595,10 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES to:@end @end: scope:[] from @10 main: scope:[main] from @10 - [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] - [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] - [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] - [4] *((const byte*) D018#0) ← (byte) 24 [ ] + [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] + [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] + [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] + [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] [5] call init_screen param-assignment [ ] to:main::@3 main::@3: scope:[main] from main @@ -14617,11 +14617,11 @@ lines: scope:[lines] from main::@1 [10] phi() [ ] to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 - [11] (byte) lines::l#2 ← phi( lines/(byte) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] + [11] (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] [12] (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 ] - [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] + [13] (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 ] [14] (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 ] - [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] + [15] (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 ] [16] (byte) line::x0#0 ← (byte~) lines::$0 [ lines::l#2 lines::$2 lines::$3 lines::$5 line::x0#0 ] [17] (byte) line::x1#0 ← (byte~) lines::$2 [ lines::l#2 lines::$3 lines::$5 line::x0#0 line::x1#0 ] [18] (byte) line::y0#0 ← (byte~) lines::$3 [ lines::l#2 lines::$5 line::x0#0 line::x1#0 line::y0#0 ] @@ -14735,7 +14735,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 [86] (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] [86] (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] [86] (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] - [87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] + [87] (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 ] to:line_ydxi::@1 line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 [88] (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] @@ -14746,18 +14746,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 [91] call plot param-assignment [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] to:line_ydxi::@5 line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1 - [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] + [92] (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 ] [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] [94] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] to:line_ydxi::@3 line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5 - [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] + [95] (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 ] [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] to:line_ydxi::@2 line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5 [97] (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] [97] (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] - [98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] + [98] (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 ] [99] if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] to:line_ydxi::@return line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 @@ -14767,14 +14767,14 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 [101] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] [101] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] [102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] - [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] + [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] [105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] - [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] + [107] (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 ] [108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] - [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] - [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] + [109] (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 ] + [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] @@ -14788,7 +14788,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 [115] (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 ] [115] (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 ] [115] (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 ] - [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] + [116] (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 ] to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 [117] (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 ] @@ -14799,18 +14799,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 [120] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] + [121] (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 ] [122] (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 ] [123] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] to:line_xdyi::@3 line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] + [124] (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 ] [125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] to:line_xdyi::@2 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 [126] (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 ] [126] (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 ] - [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] + [127] (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 ] [128] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] to:line_xdyi::@return line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 @@ -14822,7 +14822,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 [130] (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 ] [130] (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 ] [130] (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 ] - [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] + [131] (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 ] to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 [132] (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 ] @@ -14833,18 +14833,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 [135] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] + [136] (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 ] [137] (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 ] [138] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] to:line_ydxd::@3 line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] + [139] (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 ] [140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] to:line_ydxd::@2 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 [141] (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 ] [141] (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 ] - [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] + [142] (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 ] [143] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] to:line_ydxd::@return line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 @@ -14856,7 +14856,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 [145] (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 ] [145] (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 ] [145] (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 ] - [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] + [146] (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 ] to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 [147] (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 ] @@ -14867,18 +14867,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 [150] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] + [151] (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 ] [152] (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 ] [153] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] to:line_xdyd::@3 line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] + [154] (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 ] [155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] to:line_xdyd::@2 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 [156] (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 ] [156] (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 ] - [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] + [157] (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 ] [158] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] to:line_xdyd::@return line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 @@ -14888,39 +14888,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 [160] phi() [ ] to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [161] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [161] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] + [161] (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 ] + [161] (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 ] + [162] (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 ] [163] *((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 ] [164] *((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 ] [165] *((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 ] - [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] - [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] + [166] (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 ] + [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [168] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] + [168] (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 ] [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] - [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] + [170] 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 ] to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] + [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [171] (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 ] + [172] (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 ] [173] (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 ] [174] (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 ] [175] *((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 ] [176] (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 ] [177] *((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 ] - [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] - [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [178] (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 ] + [179] 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 ] to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] + [180] (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 ] to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 [181] (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 ] [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] - [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] + [183] 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 ] to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 [184] return [ ] @@ -14932,15 +14932,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 [186] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] - [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] + [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] [188] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] - [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] + [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 [190] (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 ] - [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] + [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] [192] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] - [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] + [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 [194] return [ ] @@ -14954,10 +14954,10 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED to:@end @end: scope:[] from @10 main: scope:[main] from @10 - [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) - [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) - [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) - [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) + [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) + [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) [5] call init_screen param-assignment [ ] ( main:0 [ ] ) to:main::@3 main::@3: scope:[main] from main @@ -14976,11 +14976,11 @@ lines: scope:[lines] from main::@1 [10] phi() [ ] ( main:0::lines:7 [ ] ) to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 - [11] (byte) lines::l#2 ← phi( lines/(byte) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] ( main:0::lines:7 [ lines::l#2 ] ) + [11] (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] ( main:0::lines:7 [ lines::l#2 ] ) [12] (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 ] ( main:0::lines:7 [ lines::l#2 lines::$0 ] ) - [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) + [13] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) [14] (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 ] ) - [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) + [15] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) [16] (byte) line::x0#0 ← (byte~) lines::$0 [ lines::l#2 lines::$2 lines::$3 lines::$5 line::x0#0 ] ( main:0::lines:7 [ lines::l#2 lines::$2 lines::$3 lines::$5 line::x0#0 ] ) [17] (byte) line::x1#0 ← (byte~) lines::$2 [ lines::l#2 lines::$3 lines::$5 line::x0#0 line::x1#0 ] ( main:0::lines:7 [ lines::l#2 lines::$3 lines::$5 line::x0#0 line::x1#0 ] ) [18] (byte) line::y0#0 ← (byte~) lines::$3 [ lines::l#2 lines::$5 line::x0#0 line::x1#0 line::y0#0 ] ( main:0::lines:7 [ lines::l#2 lines::$5 line::x0#0 line::x1#0 line::y0#0 ] ) @@ -15094,7 +15094,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3 [86] (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ) [86] (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ) [86] (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] main:0::lines:7::line:20::line_ydxi:85 [ 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::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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::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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 [88] (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) @@ -15105,18 +15105,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2 [91] call plot param-assignment [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 - [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) + [92] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [94] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 - [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) + [95] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 [97] (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [97] (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) + [98] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) [99] if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 @@ -15126,14 +15126,14 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 [101] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [101] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) - [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) + [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) - [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) + [107] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) - [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) - [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) + [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) + [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) @@ -15147,7 +15147,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27 [115] (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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) [115] (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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) [115] (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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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::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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 [117] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) @@ -15158,18 +15158,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 [120] 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 - [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) + [121] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [123] 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 - [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) + [124] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 [126] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [126] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) + [127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) [128] 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 @@ -15181,7 +15181,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6 [130] (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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) [130] (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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) [130] (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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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::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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 [132] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) @@ -15192,18 +15192,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 [135] 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 - [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) + [136] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [138] 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 - [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) + [139] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 [141] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [141] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) + [142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) [143] 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 @@ -15215,7 +15215,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24 [145] (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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) [145] (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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) [145] (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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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::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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 [147] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) @@ -15226,18 +15226,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 [150] 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 - [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) + [151] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [153] 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 - [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) + [154] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 [156] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [156] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) + [157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) [158] 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 @@ -15247,39 +15247,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@3 [160] phi() [ ] ( main:0::init_plot_tables:6 [ ] ) to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [161] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [161] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) + [161] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [161] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) [163] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) [164] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) - [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) + [166] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [168] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) + [168] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) - [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [170] 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:0::init_plot_tables:6 [ 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 - [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) + [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [171] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) [173] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) [174] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) [175] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) [176] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) [177] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) - [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) + [179] 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:0::init_plot_tables:6 [ 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 - [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) + [180] (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:0::init_plot_tables:6 [ 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 [181] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) - [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [183] 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:0::init_plot_tables:6 [ 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 [184] return [ ] ( main:0::init_plot_tables:6 [ ] ) @@ -15291,15 +15291,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 [186] (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:0::init_screen:5 [ init_screen::b#2 ] ) - [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) + [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) [188] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) - [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) + [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 [190] (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:0::init_screen:5 [ init_screen::c#2 ] ) - [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) + [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) [192] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) - [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) + [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 [194] return [ ] ( main:0::init_screen:5 [ ] ) @@ -15309,69 +15309,69 @@ DOMINATORS @begin dominated by @begin @10 dominated by @begin @10 @end dominated by @end @begin @10 -main dominated by @begin @10 main -main::@3 dominated by @begin main::@3 @10 main -main::@1 dominated by @begin main::@1 main::@3 @10 main -main::@5 dominated by @begin main::@1 main::@3 main::@5 @10 main -main::@return dominated by main::@return @begin main::@1 main::@3 main::@5 @10 main -lines dominated by lines @begin main::@1 main::@3 @10 main -lines::@1 dominated by lines::@1 lines @begin main::@1 main::@3 @10 main -lines::@3 dominated by lines::@3 lines::@1 lines @begin main::@1 main::@3 @10 main -lines::@return dominated by lines::@3 lines::@1 lines @begin main::@1 main::@3 @10 lines::@return main -line dominated by lines::@1 lines @begin line main::@1 main::@3 @10 main -line::@15 dominated by lines::@1 line::@15 lines @begin line main::@1 main::@3 @10 main -line::@16 dominated by lines::@1 line::@15 line::@16 lines @begin line main::@1 main::@3 @10 main -line::@17 dominated by lines::@1 line::@15 line::@16 line::@17 lines @begin line main::@1 main::@3 @10 main -line::@return dominated by lines::@1 lines @begin line main::@1 main::@3 @10 line::@return main -line::@3 dominated by line::@3 lines::@1 line::@15 line::@16 lines @begin line main::@1 main::@3 @10 main -line::@2 dominated by line::@2 lines::@1 line::@15 lines @begin line main::@1 main::@3 @10 main -line::@20 dominated by line::@2 lines::@1 line::@15 lines @begin line main::@1 line::@20 main::@3 @10 main -line::@6 dominated by line::@2 line::@6 lines::@1 line::@15 lines @begin line main::@1 main::@3 @10 main -line::@1 dominated by line::@1 lines::@1 lines @begin line main::@1 main::@3 @10 main -line::@23 dominated by line::@1 lines::@1 lines @begin line line::@23 main::@1 main::@3 @10 main -line::@24 dominated by line::@1 lines::@1 lines @begin line::@24 line line::@23 main::@1 main::@3 @10 main -line::@10 dominated by line::@1 line::@10 lines::@1 lines @begin line line::@23 main::@1 main::@3 @10 main -line::@9 dominated by line::@1 line::@9 lines::@1 lines @begin line main::@1 main::@3 @10 main -line::@27 dominated by line::@1 lines::@1 line::@9 lines @begin line main::@1 main::@3 line::@27 @10 main -line::@13 dominated by line::@1 line::@13 lines::@1 line::@9 lines @begin line main::@1 main::@3 @10 main -line_ydxi dominated by line_ydxi lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxi::@1 dominated by line_ydxi line_ydxi::@1 lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxi::@5 dominated by line_ydxi line_ydxi::@1 line_ydxi::@5 lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxi::@3 dominated by line_ydxi line_ydxi::@1 line_ydxi::@3 line_ydxi::@5 lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxi::@2 dominated by line_ydxi line_ydxi::@2 line_ydxi::@1 line_ydxi::@5 lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxi::@return dominated by line_ydxi line_ydxi::@2 line_ydxi::@1 line_ydxi::@5 lines::@1 lines line_ydxi::@return @begin line main::@1 main::@3 @10 main -plot dominated by lines::@1 lines @begin line main::@1 main::@3 plot @10 main -plot::@return dominated by plot::@return lines::@1 lines @begin line main::@1 main::@3 plot @10 main -line_xdyi dominated by lines::@1 lines @begin line main::@1 main::@3 line_xdyi @10 main -line_xdyi::@1 dominated by lines::@1 line_xdyi::@1 lines @begin line main::@1 main::@3 line_xdyi @10 main -line_xdyi::@5 dominated by lines::@1 line_xdyi::@1 line_xdyi::@5 lines @begin line main::@1 main::@3 line_xdyi @10 main -line_xdyi::@3 dominated by lines::@1 line_xdyi::@1 line_xdyi::@3 line_xdyi::@5 lines @begin line main::@1 main::@3 line_xdyi @10 main -line_xdyi::@2 dominated by lines::@1 line_xdyi::@1 line_xdyi::@2 line_xdyi::@5 lines @begin line main::@1 main::@3 line_xdyi @10 main -line_xdyi::@return dominated by lines::@1 line_xdyi::@1 line_xdyi::@2 line_xdyi::@5 lines @begin line main::@1 main::@3 line_xdyi @10 main line_xdyi::@return -line_ydxd dominated by line_ydxd lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxd::@1 dominated by line_ydxd line_ydxd::@1 lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxd::@5 dominated by line_ydxd::@5 line_ydxd line_ydxd::@1 lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxd::@3 dominated by line_ydxd::@3 line_ydxd::@5 line_ydxd line_ydxd::@1 lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxd::@2 dominated by line_ydxd::@2 line_ydxd::@5 line_ydxd line_ydxd::@1 lines::@1 lines @begin line main::@1 main::@3 @10 main -line_ydxd::@return dominated by line_ydxd::@2 line_ydxd::@5 line_ydxd line_ydxd::@1 lines::@1 lines @begin line main::@1 main::@3 @10 main line_ydxd::@return -line_xdyd dominated by lines::@1 lines @begin line main::@1 main::@3 line_xdyd @10 main -line_xdyd::@1 dominated by lines::@1 lines @begin line main::@1 main::@3 line_xdyd @10 line_xdyd::@1 main -line_xdyd::@5 dominated by lines::@1 lines @begin line main::@1 main::@3 line_xdyd @10 line_xdyd::@5 line_xdyd::@1 main -line_xdyd::@3 dominated by lines::@1 lines @begin line main::@1 main::@3 line_xdyd @10 line_xdyd::@5 line_xdyd::@3 line_xdyd::@1 main -line_xdyd::@2 dominated by lines::@1 lines @begin line main::@1 main::@3 line_xdyd @10 line_xdyd::@5 line_xdyd::@2 line_xdyd::@1 main -line_xdyd::@return dominated by lines::@1 line_xdyd::@return lines @begin line main::@1 main::@3 line_xdyd @10 line_xdyd::@5 line_xdyd::@2 line_xdyd::@1 main -init_plot_tables dominated by init_plot_tables @begin main::@3 @10 main -init_plot_tables::@1 dominated by init_plot_tables::@1 init_plot_tables @begin main::@3 @10 main -init_plot_tables::@2 dominated by init_plot_tables::@2 init_plot_tables::@1 init_plot_tables @begin main::@3 @10 main -init_plot_tables::@3 dominated by init_plot_tables::@3 init_plot_tables::@2 init_plot_tables::@1 init_plot_tables @begin main::@3 @10 main -init_plot_tables::@7 dominated by init_plot_tables::@3 init_plot_tables::@2 init_plot_tables::@1 init_plot_tables init_plot_tables::@7 @begin main::@3 @10 main -init_plot_tables::@4 dominated by init_plot_tables::@3 init_plot_tables::@2 init_plot_tables::@1 init_plot_tables init_plot_tables::@4 @begin main::@3 @10 main -init_plot_tables::@return dominated by init_plot_tables::@3 init_plot_tables::@2 init_plot_tables::@1 init_plot_tables init_plot_tables::@return init_plot_tables::@4 @begin main::@3 @10 main -init_plot_tables::@10 dominated by init_plot_tables::@10 init_plot_tables::@1 init_plot_tables @begin main::@3 @10 main -init_screen dominated by init_screen @begin @10 main -init_screen::@1 dominated by init_screen::@1 init_screen @begin @10 main -init_screen::@2 dominated by init_screen::@1 init_screen::@2 init_screen @begin @10 main -init_screen::@return dominated by init_screen::@1 init_screen::@2 init_screen @begin init_screen::@return @10 main +main dominated by main @begin @10 +main::@3 dominated by main main::@3 @begin @10 +main::@1 dominated by main main::@1 main::@3 @begin @10 +main::@5 dominated by main main::@1 main::@5 main::@3 @begin @10 +main::@return dominated by main main::@1 main::@5 main::@3 @begin main::@return @10 +lines dominated by main main::@1 main::@3 @begin lines @10 +lines::@1 dominated by main main::@1 main::@3 @begin lines::@1 lines @10 +lines::@3 dominated by main main::@1 main::@3 @begin lines::@1 lines::@3 lines @10 +lines::@return dominated by main main::@1 main::@3 @begin lines::@return lines::@1 lines::@3 lines @10 +line dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 +line::@15 dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@15 +line::@16 dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@16 line::@15 +line::@17 dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@16 line::@15 line::@17 +line::@return dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@return +line::@3 dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@3 line::@16 line::@15 +line::@2 dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@2 line::@15 +line::@20 dominated by line::@20 main main::@1 main::@3 @begin lines::@1 line lines @10 line::@2 line::@15 +line::@6 dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@6 line::@2 line::@15 +line::@1 dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@1 +line::@23 dominated by line::@23 main main::@1 main::@3 @begin lines::@1 line lines @10 line::@1 +line::@24 dominated by line::@23 line::@24 main main::@1 main::@3 @begin lines::@1 line lines @10 line::@1 +line::@10 dominated by line::@23 main main::@1 main::@3 @begin lines::@1 line lines @10 line::@10 line::@1 +line::@9 dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@9 line::@1 +line::@27 dominated by main main::@1 line::@27 main::@3 @begin lines::@1 line lines @10 line::@9 line::@1 +line::@13 dominated by main main::@1 main::@3 @begin lines::@1 line lines @10 line::@9 line::@13 line::@1 +line_ydxi dominated by main main::@1 main::@3 @begin lines::@1 line line_ydxi lines @10 +line_ydxi::@1 dominated by main line_ydxi::@1 main::@1 main::@3 @begin lines::@1 line line_ydxi lines @10 +line_ydxi::@5 dominated by main line_ydxi::@5 line_ydxi::@1 main::@1 main::@3 @begin lines::@1 line line_ydxi lines @10 +line_ydxi::@3 dominated by main line_ydxi::@5 line_ydxi::@1 line_ydxi::@3 main::@1 main::@3 @begin lines::@1 line line_ydxi lines @10 +line_ydxi::@2 dominated by main line_ydxi::@5 line_ydxi::@1 line_ydxi::@2 main::@1 main::@3 @begin lines::@1 line line_ydxi lines @10 +line_ydxi::@return dominated by main line_ydxi::@5 line_ydxi::@1 line_ydxi::@2 main::@1 main::@3 line_ydxi::@return @begin lines::@1 line line_ydxi lines @10 +plot dominated by main main::@1 main::@3 @begin lines::@1 line plot lines @10 +plot::@return dominated by main main::@1 main::@3 @begin lines::@1 line plot lines @10 plot::@return +line_xdyi dominated by main line_xdyi main::@1 main::@3 @begin lines::@1 line lines @10 +line_xdyi::@1 dominated by main line_xdyi main::@1 main::@3 @begin line_xdyi::@1 lines::@1 line lines @10 +line_xdyi::@5 dominated by main line_xdyi main::@1 main::@3 @begin line_xdyi::@1 line_xdyi::@5 lines::@1 line lines @10 +line_xdyi::@3 dominated by main line_xdyi main::@1 main::@3 @begin line_xdyi::@1 line_xdyi::@3 line_xdyi::@5 lines::@1 line lines @10 +line_xdyi::@2 dominated by main line_xdyi main::@1 main::@3 @begin line_xdyi::@1 line_xdyi::@2 line_xdyi::@5 lines::@1 line lines @10 +line_xdyi::@return dominated by line_xdyi::@return main line_xdyi main::@1 main::@3 @begin line_xdyi::@1 line_xdyi::@2 line_xdyi::@5 lines::@1 line lines @10 +line_ydxd dominated by main main::@1 main::@3 @begin lines::@1 line line_ydxd lines @10 +line_ydxd::@1 dominated by main main::@1 main::@3 @begin lines::@1 line line_ydxd::@1 line_ydxd lines @10 +line_ydxd::@5 dominated by main main::@1 main::@3 @begin lines::@1 line line_ydxd::@5 line_ydxd::@1 line_ydxd lines @10 +line_ydxd::@3 dominated by main main::@1 main::@3 @begin lines::@1 line line_ydxd::@5 line_ydxd::@3 line_ydxd::@1 line_ydxd lines @10 +line_ydxd::@2 dominated by main main::@1 main::@3 @begin lines::@1 line line_ydxd::@5 line_ydxd::@2 line_ydxd::@1 line_ydxd lines @10 +line_ydxd::@return dominated by main line_ydxd::@return main::@1 main::@3 @begin lines::@1 line line_ydxd::@5 line_ydxd::@2 line_ydxd::@1 line_ydxd lines @10 +line_xdyd dominated by main line_xdyd main::@1 main::@3 @begin lines::@1 line lines @10 +line_xdyd::@1 dominated by main line_xdyd main::@1 main::@3 @begin lines::@1 line line_xdyd::@1 lines @10 +line_xdyd::@5 dominated by main line_xdyd main::@1 main::@3 @begin lines::@1 line line_xdyd::@1 line_xdyd::@5 lines @10 +line_xdyd::@3 dominated by main line_xdyd main::@1 main::@3 @begin lines::@1 line line_xdyd::@1 line_xdyd::@5 line_xdyd::@3 lines @10 +line_xdyd::@2 dominated by main line_xdyd main::@1 main::@3 @begin lines::@1 line line_xdyd::@1 line_xdyd::@5 line_xdyd::@2 lines @10 +line_xdyd::@return dominated by main line_xdyd main::@1 main::@3 @begin line_xdyd::@return lines::@1 line line_xdyd::@1 line_xdyd::@5 line_xdyd::@2 lines @10 +init_plot_tables dominated by main main::@3 @begin init_plot_tables @10 +init_plot_tables::@1 dominated by main init_plot_tables::@1 main::@3 @begin init_plot_tables @10 +init_plot_tables::@2 dominated by main init_plot_tables::@2 init_plot_tables::@1 main::@3 @begin init_plot_tables @10 +init_plot_tables::@3 dominated by main init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@3 @begin init_plot_tables @10 +init_plot_tables::@7 dominated by main init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 init_plot_tables::@7 main::@3 @begin init_plot_tables @10 +init_plot_tables::@4 dominated by main init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@3 init_plot_tables::@4 @begin init_plot_tables @10 +init_plot_tables::@return dominated by main init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@3 init_plot_tables::@4 @begin init_plot_tables::@return init_plot_tables @10 +init_plot_tables::@10 dominated by main init_plot_tables::@1 main::@3 @begin init_plot_tables @10 init_plot_tables::@10 +init_screen dominated by main @begin init_screen @10 +init_screen::@1 dominated by main @begin init_screen init_screen::@1 @10 +init_screen::@2 dominated by main @begin init_screen init_screen::@2 init_screen::@1 @10 +init_screen::@return dominated by main @begin init_screen init_screen::@2 init_screen::@1 @10 init_screen::@return Found back edge: Loop head: main::@1 tails: main::@5 blocks: null Found back edge: Loop head: lines::@1 tails: lines::@3 blocks: null @@ -15657,9 +15657,9 @@ VARIABLE REGISTER WEIGHTS (byte*) plot::plotter_x (byte*) plot::plotter_x#1 2.0 (byte*) plot::plotter_x#2 0.8 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#1 2.0 -(byte*) plot::plotter_y#2 4.0 +(word) plot::plotter_y +(word) plot::plotter_y#1 2.0 +(word) plot::plotter_y#2 4.0 (byte) plot::x (byte) plot::x#0 11.0 (byte) plot::x#1 11.0 @@ -15869,9 +15869,9 @@ Allocated zp ZP_PTR_BYTE:54 [ plot::plotter_x#1 ] Allocated zp ZP_BYTE:56 [ plot::$1 ] Allocated zp ZP_PTR_BYTE:57 [ plot::plotter_x#2 ] Allocated zp ZP_BYTE:59 [ plot::$2 ] -Allocated zp ZP_PTR_BYTE:60 [ plot::plotter_y#1 ] +Allocated zp ZP_WORD:60 [ plot::plotter_y#1 ] Allocated zp ZP_BYTE:62 [ plot::$3 ] -Allocated zp ZP_PTR_BYTE:63 [ plot::plotter_y#2 ] +Allocated zp ZP_WORD:63 [ plot::plotter_y#2 ] Allocated zp ZP_PTR_BYTE:65 [ plot::plotter#0 ] Allocated zp ZP_BYTE:67 [ plot::$5 ] Allocated zp ZP_BYTE:68 [ plot::$6 ] @@ -15926,16 +15926,16 @@ b10: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -15976,7 +15976,7 @@ lines: { .label l = 2 //SEG24 [11] phi from lines to lines::@1 [phi:lines->lines::@1] b1_from_lines: - //SEG25 [11] phi (byte) lines::l#2 = (byte) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 + //SEG25 [11] phi (byte) lines::l#2 = (byte/signed byte/word/signed word) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 lda #0 sta l jmp b1 @@ -15990,7 +15990,7 @@ lines: { ldx l lda lines_x,x sta _0 - //SEG30 [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG30 [13] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx l lda lines_x+1,x sta _2 @@ -15998,7 +15998,7 @@ lines: { ldx l lda lines_y,x sta _3 - //SEG32 [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG32 [15] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx l lda lines_y+1,x sta _5 @@ -16350,7 +16350,7 @@ line_ydxi: { .label yd = 4 .label xd = 3 .label e = 8 - //SEG170 [87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG170 [87] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -16378,7 +16378,7 @@ line_ydxi: { jmp b5 //SEG182 line_ydxi::@5 b5: - //SEG183 [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG183 [92] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG184 [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -16392,7 +16392,7 @@ line_ydxi: { jmp b3 //SEG186 line_ydxi::@3 b3: - //SEG187 [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG187 [95] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 inc x //SEG188 [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -16407,7 +16407,7 @@ line_ydxi: { jmp b2 //SEG192 line_ydxi::@2 b2: - //SEG193 [98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG193 [98] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_plus_1 lda y1 clc adc #1 @@ -16441,11 +16441,11 @@ plot: { ldx x lda plot_xhi,x sta _0 - //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_zpby1 - lda #<0 - sta plotter_x + //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_zpby1 lda _0 sta plotter_x+1 + lda #<0 + sta plotter_x //SEG200 [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx x lda plot_xlo,x @@ -16459,7 +16459,7 @@ plot: { ldx y lda plot_yhi,x sta _2 - //SEG203 [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_zpby1 + //SEG203 [107] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=coby1_sethi_zpby1 lda #<0 sta plotter_y lda _2 @@ -16468,19 +16468,19 @@ plot: { ldx y lda plot_ylo,x sta _3 - //SEG205 [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby2_setlo_zpby1 + //SEG205 [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=zpwo2_setlo_zpby1 lda _3 sta plotter_y_2 lda plotter_y+1 sta plotter_y_2+1 - //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby2_plus_zpptrby3 - lda plotter_x_2 + //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby2_plus_zpwo1 + lda plotter clc - adc plotter_y_2 - sta plotter - lda plotter_x_2+1 - adc plotter_y_2+1 - sta plotter+1 + adc plotter_x_2 + sta plotter_y_2 + lda plotter+1 + adc plotter_x_2+1 + sta plotter_y_2+1 //SEG207 [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx x lda plot_bit,x @@ -16509,7 +16509,7 @@ line_xdyi: { .label xd = $c .label yd = $b .label e = $10 - //SEG213 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG213 [116] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -16537,7 +16537,7 @@ line_xdyi: { jmp b5 //SEG225 line_xdyi::@5 b5: - //SEG226 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG226 [121] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 inc x //SEG227 [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -16551,7 +16551,7 @@ line_xdyi: { jmp b3 //SEG229 line_xdyi::@3 b3: - //SEG230 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG230 [124] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG231 [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -16566,7 +16566,7 @@ line_xdyi: { jmp b2 //SEG235 line_xdyi::@2 b2: - //SEG236 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG236 [127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -16590,7 +16590,7 @@ line_ydxd: { .label yd = $12 .label xd = $11 .label e = $16 - //SEG241 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG241 [131] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -16618,7 +16618,7 @@ line_ydxd: { jmp b5 //SEG253 line_ydxd::@5 b5: - //SEG254 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG254 [136] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG255 [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -16632,7 +16632,7 @@ line_ydxd: { jmp b3 //SEG257 line_ydxd::@3 b3: - //SEG258 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_minus_1 + //SEG258 [139] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_minus_1 dec x //SEG259 [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -16647,7 +16647,7 @@ line_ydxd: { jmp b2 //SEG263 line_ydxd::@2 b2: - //SEG264 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG264 [142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_plus_1 lda y1 clc adc #1 @@ -16671,7 +16671,7 @@ line_xdyd: { .label xd = $18 .label yd = $17 .label e = $1c - //SEG269 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG269 [146] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -16699,7 +16699,7 @@ line_xdyd: { jmp b5 //SEG281 line_xdyd::@5 b5: - //SEG282 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG282 [151] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_plus_1 inc x //SEG283 [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -16713,7 +16713,7 @@ line_xdyd: { jmp b3 //SEG285 line_xdyd::@3 b3: - //SEG286 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 + //SEG286 [154] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 dec y //SEG287 [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -16728,7 +16728,7 @@ line_xdyd: { jmp b2 //SEG291 line_xdyd::@2 b2: - //SEG292 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG292 [157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -16757,10 +16757,10 @@ init_plot_tables: { .label yoffs = $20 //SEG297 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- zpby1=coby1 + //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- zpby1=coby1 lda #$80 sta bits - //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- zpby1=coby1 + //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- zpby1=coby1 lda #0 sta x jmp b1 @@ -16771,7 +16771,7 @@ init_plot_tables: { jmp b1 //SEG303 init_plot_tables::@1 b1: - //SEG304 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- zpby1=zpby2_band_coby1 + //SEG304 [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- zpby1=zpby2_band_coby1 lda x and #$f8 sta _0 @@ -16787,14 +16787,14 @@ init_plot_tables: { lda bits ldx x sta plot_bit,x - //SEG308 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- zpby1=zpby1_ror_1 + //SEG308 [166] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- zpby1=zpby1_ror_1 lsr bits - //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- zpby1_neq_0_then_la1 + //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- zpby1_neq_0_then_la1 lda bits bne b10 //SEG310 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- zpby1=coby1 + //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- zpby1=coby1 lda #$80 sta bits jmp b2 @@ -16802,17 +16802,17 @@ init_plot_tables: { b2: //SEG313 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- zpby1=_inc_zpby1 inc x - //SEG314 [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- zpby1_neq_0_then_la1 + //SEG314 [170] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- zpby1_neq_0_then_la1 lda x bne b1_from_b2 //SEG315 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs lda #0 sta yoffs+1 - //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- zpby1=coby1 + //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- zpby1=coby1 lda #0 sta y jmp b3 @@ -16823,7 +16823,7 @@ init_plot_tables: { jmp b3 //SEG321 init_plot_tables::@3 b3: - //SEG322 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=zpby2_band_coby1 + //SEG322 [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=zpby2_band_coby1 lda y and #7 sta _6 @@ -16845,18 +16845,18 @@ init_plot_tables: { lda _9 ldx y sta plot_yhi,x - //SEG328 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- zpby1=zpby2_band_coby1 + //SEG328 [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- zpby1=zpby2_band_coby1 lda y and #7 sta _10 - //SEG329 [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG329 [179] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- zpby1_neq_coby1_then_la1 lda _10 cmp #7 bne b4_from_b3 jmp b7 //SEG330 init_plot_tables::@7 b7: - //SEG331 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG331 [180] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -16873,7 +16873,7 @@ init_plot_tables: { b4: //SEG335 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- zpby1=_inc_zpby1 inc y - //SEG336 [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- zpby1_neq_0_then_la1 + //SEG336 [183] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- zpby1_neq_0_then_la1 lda y bne b3_from_b4 jmp breturn @@ -16906,7 +16906,7 @@ init_screen: { jmp b1 //SEG347 init_screen::@1 b1: - //SEG348 [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG348 [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #0 sta (b),y @@ -16915,7 +16915,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 @@ -16936,7 +16936,7 @@ init_screen: { jmp b2 //SEG355 init_screen::@2 b2: - //SEG356 [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG356 [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -16945,7 +16945,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -16962,10 +16962,10 @@ init_screen: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp ZP_BYTE:67 [ plot::$5 ] has ALU potential. Equivalence Class zp ZP_BYTE:74 [ init_plot_tables::$7 ] has ALU potential. -Statement [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) always clobbers reg byte a Statement [25] (byte) line::xd#1 ← (byte) line::x1#0 - (byte) line::x0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ( main:0::lines:7::line:20 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ line::x0#0 ] @@ -16985,7 +16985,7 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ li Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 line_ydxi::x#0 line_ydxi::x#6 line_ydxi::x#2 ] -Statement [105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a +Statement [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] @@ -17007,8 +17007,9 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ l Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] -Statement [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a -Statement [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a +Statement [105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a +Statement [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a +Statement [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a Statement [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] @@ -17036,67 +17037,68 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ l Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] Statement [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte y -Statement [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) always clobbers reg byte a +Statement [116] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) always clobbers reg byte a Statement [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) always clobbers reg byte a Statement [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) always clobbers reg byte a -Statement [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) always clobbers reg byte a +Statement [131] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) always clobbers reg byte a Statement [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) always clobbers reg byte a Statement [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) always clobbers reg byte a -Statement [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) always clobbers reg byte a +Statement [146] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) always clobbers reg byte a Statement [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) always clobbers reg byte a Statement [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) always clobbers reg byte a -Statement [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a +Statement [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ init_plot_tables::x#2 init_plot_tables::x#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] Statement [164] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a Statement [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ init_plot_tables::y#2 init_plot_tables::y#1 ] Statement [176] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a -Statement [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) always clobbers reg byte a -Statement [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [180] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) always clobbers reg byte a Statement [25] (byte) line::xd#1 ← (byte) line::x1#0 - (byte) line::x0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ( main:0::lines:7::line:20 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 ] ) always clobbers reg byte a Statement [27] (byte) line::yd#1 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ( main:0::lines:7::line:20 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#1 ] ) always clobbers reg byte a Statement [42] (byte) line::yd#0 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ( main:0::lines:7::line:20 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#1 line::yd#0 ] ) always clobbers reg byte a Statement [56] (byte) line::xd#0 ← (byte) line::x0#0 - (byte) line::x1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ( main:0::lines:7::line:20 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 ] ) always clobbers reg byte a Statement [58] (byte) line::yd#3 ← (byte) line::y1#0 - (byte) line::y0#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ( main:0::lines:7::line:20 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#3 ] ) always clobbers reg byte a Statement [72] (byte) line::yd#10 ← (byte) line::y0#0 - (byte) line::y1#0 [ line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ( main:0::lines:7::line:20 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 line::xd#0 line::yd#10 ] ) always clobbers reg byte a -Statement [87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) always clobbers reg byte a +Statement [87] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) always clobbers reg byte a Statement [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) always clobbers reg byte a Statement [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) always clobbers reg byte a +Statement [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a Statement [105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a -Statement [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a -Statement [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a +Statement [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a +Statement [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a Statement [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte a reg byte y Statement [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) always clobbers reg byte y -Statement [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) always clobbers reg byte a +Statement [116] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) always clobbers reg byte a Statement [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) always clobbers reg byte a Statement [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) always clobbers reg byte a -Statement [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) always clobbers reg byte a +Statement [131] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) always clobbers reg byte a Statement [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) always clobbers reg byte a Statement [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) always clobbers reg byte a -Statement [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) always clobbers reg byte a +Statement [146] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) always clobbers reg byte a Statement [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) always clobbers reg byte a Statement [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) always clobbers reg byte a -Statement [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a +Statement [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a Statement [164] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a Statement [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a Statement [176] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a -Statement [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [180] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] : zp ZP_BYTE:4 , reg byte x , @@ -17150,9 +17152,9 @@ Potential registers zp ZP_PTR_BYTE:54 [ plot::plotter_x#1 ] : zp ZP_PTR_BYTE:54 Potential registers zp ZP_BYTE:56 [ plot::$1 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_PTR_BYTE:57 [ plot::plotter_x#2 ] : zp ZP_PTR_BYTE:57 , Potential registers zp ZP_BYTE:59 [ plot::$2 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_PTR_BYTE:60 [ plot::plotter_y#1 ] : zp ZP_PTR_BYTE:60 , +Potential registers zp ZP_WORD:60 [ plot::plotter_y#1 ] : zp ZP_WORD:60 , Potential registers zp ZP_BYTE:62 [ plot::$3 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_PTR_BYTE:63 [ plot::plotter_y#2 ] : zp ZP_PTR_BYTE:63 , +Potential registers zp ZP_WORD:63 [ plot::plotter_y#2 ] : zp ZP_WORD:63 , Potential registers zp ZP_PTR_BYTE:65 [ plot::plotter#0 ] : zp ZP_PTR_BYTE:65 , Potential registers zp ZP_BYTE:67 [ plot::$5 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , reg byte alu , Potential registers zp ZP_BYTE:68 [ plot::$6 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , @@ -17169,7 +17171,7 @@ Potential registers zp ZP_BYTE:77 [ init_plot_tables::$10 ] : zp ZP_BYTE:77 , re REGISTER UPLIFT SCOPES Uplift Scope [lines] 212.1: zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] 50.5: zp ZP_BYTE:38 [ lines::$0 ] 50.5: zp ZP_BYTE:39 [ lines::$2 ] 50.5: zp ZP_BYTE:40 [ lines::$3 ] 50.5: zp ZP_BYTE:41 [ lines::$5 ] Uplift Scope [init_plot_tables] 46.93: zp ZP_BYTE:30 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 39.11: zp ZP_PTR_BYTE:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.75: zp ZP_BYTE:29 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:31 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:72 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:74 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:75 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:76 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:77 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:73 [ init_plot_tables::$6 ] -Uplift Scope [plot] 94.86: zp ZP_BYTE:10 [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] 49: zp ZP_BYTE:9 [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] 4: zp ZP_BYTE:53 [ plot::$0 ] 4: zp ZP_BYTE:56 [ plot::$1 ] 4: zp ZP_BYTE:59 [ plot::$2 ] 4: zp ZP_BYTE:62 [ plot::$3 ] 4: zp ZP_PTR_BYTE:63 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:67 [ plot::$5 ] 4: zp ZP_BYTE:68 [ plot::$6 ] 2: zp ZP_PTR_BYTE:54 [ plot::plotter_x#1 ] 2: zp ZP_PTR_BYTE:60 [ plot::plotter_y#1 ] 1.33: zp ZP_PTR_BYTE:65 [ plot::plotter#0 ] 0.8: zp ZP_PTR_BYTE:57 [ plot::plotter_x#2 ] +Uplift Scope [plot] 94.86: zp ZP_BYTE:10 [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] 49: zp ZP_BYTE:9 [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] 4: zp ZP_BYTE:53 [ plot::$0 ] 4: zp ZP_BYTE:56 [ plot::$1 ] 4: zp ZP_BYTE:59 [ plot::$2 ] 4: zp ZP_BYTE:62 [ plot::$3 ] 4: zp ZP_WORD:63 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:67 [ plot::$5 ] 4: zp ZP_BYTE:68 [ plot::$6 ] 2: zp ZP_PTR_BYTE:54 [ plot::plotter_x#1 ] 2: zp ZP_WORD:60 [ plot::plotter_y#1 ] 1.33: zp ZP_PTR_BYTE:65 [ plot::plotter#0 ] 0.8: zp ZP_PTR_BYTE:57 [ plot::plotter_x#2 ] Uplift Scope [line_xdyi] 56.47: zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] 33.57: zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] 22: zp ZP_BYTE:69 [ line_xdyi::$8 ] 17.48: zp ZP_BYTE:14 [ line_xdyi::x#3 line_xdyi::x#6 line_xdyi::x#0 line_xdyi::x#1 line_xdyi::x#2 ] 9.21: zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] 5.86: zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] 3.74: zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] Uplift Scope [line_xdyd] 56.47: zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] 33.57: zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] 22: zp ZP_BYTE:71 [ line_xdyd::$8 ] 17.48: zp ZP_BYTE:26 [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ] 9.21: zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] 5.86: zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] 3.74: zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] Uplift Scope [line_ydxi] 56.47: zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] 33.57: zp ZP_BYTE:6 [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 line_ydxi::x#0 line_ydxi::x#6 line_ydxi::x#2 ] 22: zp ZP_BYTE:52 [ line_ydxi::$8 ] 17.48: zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] 9.21: zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] 5.86: zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] 3.74: zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] @@ -17179,99 +17181,99 @@ Uplift Scope [line] 6.25: zp ZP_BYTE:45 [ line::y1#0 ] 5.95: zp ZP_BYTE:44 [ lin Uplift Scope [main] Uplift Scope [] -Uplifting [lines] best 16776 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] reg byte y [ lines::$0 ] zp ZP_BYTE:39 [ lines::$2 ] zp ZP_BYTE:40 [ lines::$3 ] reg byte x [ lines::$5 ] +Uplifting [lines] best 16885 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] reg byte y [ lines::$0 ] zp ZP_BYTE:39 [ lines::$2 ] zp ZP_BYTE:40 [ lines::$3 ] reg byte x [ lines::$5 ] Uplift attempts [init_plot_tables] 10000/138240 (limiting to 10000) -Uplifting [init_plot_tables] best 16146 combination reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] zp ZP_PTR_BYTE:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:77 [ init_plot_tables::$10 ] zp ZP_BYTE:73 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 16255 combination reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] zp ZP_PTR_BYTE:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:77 [ init_plot_tables::$10 ] zp ZP_BYTE:73 [ init_plot_tables::$6 ] Limited combination testing to 10000 combinations of 138240 possible. Uplift attempts [plot] 10000/46080 (limiting to 10000) -Uplifting [plot] best 15861 combination reg byte y [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] reg byte x [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] reg byte a [ plot::$3 ] zp ZP_PTR_BYTE:63 [ plot::plotter_y#2 ] reg byte a [ plot::$5 ] zp ZP_BYTE:68 [ plot::$6 ] zp ZP_PTR_BYTE:54 [ plot::plotter_x#1 ] zp ZP_PTR_BYTE:60 [ plot::plotter_y#1 ] zp ZP_PTR_BYTE:65 [ plot::plotter#0 ] zp ZP_PTR_BYTE:57 [ plot::plotter_x#2 ] +Uplifting [plot] best 15970 combination reg byte y [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] reg byte x [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] reg byte a [ plot::$3 ] zp ZP_WORD:63 [ plot::plotter_y#2 ] reg byte a [ plot::$5 ] zp ZP_BYTE:68 [ plot::$6 ] zp ZP_PTR_BYTE:54 [ plot::plotter_x#1 ] zp ZP_WORD:60 [ plot::plotter_y#1 ] zp ZP_PTR_BYTE:65 [ plot::plotter#0 ] zp ZP_PTR_BYTE:57 [ plot::plotter_x#2 ] Limited combination testing to 10000 combinations of 46080 possible. -Uplifting [line_xdyi] best 15765 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] zp ZP_BYTE:69 [ line_xdyi::$8 ] reg byte x [ line_xdyi::x#3 line_xdyi::x#6 line_xdyi::x#0 line_xdyi::x#1 line_xdyi::x#2 ] zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] -Uplifting [line_xdyd] best 15669 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] zp ZP_BYTE:27 [ 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:71 [ line_xdyd::$8 ] reg byte x [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ] zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] -Uplifting [line_ydxi] best 15543 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] 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 ] reg byte a [ line_ydxi::$8 ] zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] -Uplifting [line_ydxd] best 15417 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] reg byte x [ line_ydxd::x#3 line_ydxd::x#5 line_ydxd::x#1 line_ydxd::x#0 line_ydxd::x#6 line_ydxd::x#2 ] reg byte a [ line_ydxd::$8 ] zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] -Uplifting [init_screen] best 15417 combination zp ZP_PTR_BYTE:34 [ init_screen::b#2 init_screen::b#1 ] zp ZP_PTR_BYTE:36 [ init_screen::c#2 init_screen::c#1 ] +Uplifting [line_xdyi] best 15874 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] zp ZP_BYTE:69 [ line_xdyi::$8 ] reg byte x [ line_xdyi::x#3 line_xdyi::x#6 line_xdyi::x#0 line_xdyi::x#1 line_xdyi::x#2 ] zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] +Uplifting [line_xdyd] best 15778 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] zp ZP_BYTE:27 [ 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:71 [ line_xdyd::$8 ] reg byte x [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ] zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] +Uplifting [line_ydxi] best 15652 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] 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 ] reg byte a [ line_ydxi::$8 ] zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] +Uplifting [line_ydxd] best 15526 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] reg byte x [ line_ydxd::x#3 line_ydxd::x#5 line_ydxd::x#1 line_ydxd::x#0 line_ydxd::x#6 line_ydxd::x#2 ] reg byte a [ line_ydxd::$8 ] zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] +Uplifting [init_screen] best 15526 combination zp ZP_PTR_BYTE:34 [ init_screen::b#2 init_screen::b#1 ] zp ZP_PTR_BYTE:36 [ init_screen::c#2 init_screen::c#1 ] Uplift attempts [line] 10000/186624 (limiting to 10000) -Uplifting [line] best 15097 combination zp ZP_BYTE:45 [ line::y1#0 ] reg byte y [ line::y0#0 ] zp ZP_BYTE:43 [ line::x1#0 ] zp ZP_BYTE:42 [ line::x0#0 ] zp ZP_BYTE:47 [ line::yd#1 ] zp ZP_BYTE:48 [ line::yd#0 ] zp ZP_BYTE:50 [ line::yd#3 ] zp ZP_BYTE:51 [ line::yd#10 ] zp ZP_BYTE:46 [ line::xd#1 ] zp ZP_BYTE:49 [ line::xd#0 ] +Uplifting [line] best 15210 combination zp ZP_BYTE:45 [ line::y1#0 ] reg byte y [ line::y0#0 ] zp ZP_BYTE:43 [ line::x1#0 ] zp ZP_BYTE:42 [ line::x0#0 ] zp ZP_BYTE:47 [ line::yd#1 ] zp ZP_BYTE:48 [ line::yd#0 ] zp ZP_BYTE:50 [ line::yd#3 ] zp ZP_BYTE:51 [ line::yd#10 ] zp ZP_BYTE:46 [ line::xd#1 ] zp ZP_BYTE:49 [ line::xd#0 ] Limited combination testing to 10000 combinations of 186624 possible. -Uplifting [main] best 15097 combination -Uplifting [] best 15097 combination +Uplifting [main] best 15210 combination +Uplifting [] best 15210 combination MISSING FRAGMENTS zpby1=_deref_zpptrby1_bor_cowo1_derefidx_yby Attempting to uplift remaining variables inzp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] -Uplifting [lines] best 15097 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] +Uplifting [lines] best 15210 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] -Uplifting [line_ydxi] best 15097 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] +Uplifting [line_ydxi] best 15210 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] -Uplifting [line_xdyi] best 15097 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] +Uplifting [line_xdyi] best 15210 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] -Uplifting [line_ydxd] best 15097 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] +Uplifting [line_ydxd] best 15210 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] -Uplifting [line_xdyd] best 15097 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] +Uplifting [line_xdyd] best 15210 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ lines::$2 ] -Uplifting [lines] best 15097 combination zp ZP_BYTE:39 [ lines::$2 ] +Uplifting [lines] best 15210 combination zp ZP_BYTE:39 [ lines::$2 ] Attempting to uplift remaining variables inzp ZP_BYTE:40 [ lines::$3 ] -Uplifting [lines] best 15097 combination zp ZP_BYTE:40 [ lines::$3 ] +Uplifting [lines] best 15210 combination zp ZP_BYTE:40 [ lines::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] -Uplifting [line_xdyi] best 15097 combination zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] +Uplifting [line_xdyi] best 15210 combination zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] -Uplifting [line_xdyd] best 15097 combination zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] +Uplifting [line_xdyd] best 15210 combination zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:69 [ line_xdyi::$8 ] -Uplifting [line_xdyi] best 15097 combination zp ZP_BYTE:69 [ line_xdyi::$8 ] +Uplifting [line_xdyi] best 15210 combination zp ZP_BYTE:69 [ line_xdyi::$8 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ line_xdyd::$8 ] -Uplifting [line_xdyd] best 15097 combination zp ZP_BYTE:71 [ line_xdyd::$8 ] +Uplifting [line_xdyd] best 15210 combination zp ZP_BYTE:71 [ line_xdyd::$8 ] Attempting to uplift remaining variables inzp ZP_BYTE:77 [ init_plot_tables::$10 ] -Uplifting [init_plot_tables] best 15037 combination reg byte a [ init_plot_tables::$10 ] +Uplifting [init_plot_tables] best 15150 combination reg byte a [ init_plot_tables::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] -Uplifting [line_ydxi] best 15037 combination zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] +Uplifting [line_ydxi] best 15150 combination zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] -Uplifting [line_ydxd] best 15037 combination zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] +Uplifting [line_ydxd] best 15150 combination zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ init_plot_tables::$6 ] -Uplifting [init_plot_tables] best 15037 combination zp ZP_BYTE:73 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 15150 combination zp ZP_BYTE:73 [ init_plot_tables::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] -Uplifting [line_ydxi] best 15037 combination zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] +Uplifting [line_ydxi] best 15150 combination zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] -Uplifting [line_xdyi] best 15037 combination zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] +Uplifting [line_xdyi] best 15150 combination zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] -Uplifting [line_ydxd] best 15037 combination zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] +Uplifting [line_ydxd] best 15150 combination zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] -Uplifting [line_xdyd] best 15037 combination zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] +Uplifting [line_xdyd] best 15150 combination zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ line::y1#0 ] -Uplifting [line] best 15037 combination zp ZP_BYTE:45 [ line::y1#0 ] +Uplifting [line] best 15150 combination zp ZP_BYTE:45 [ line::y1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] -Uplifting [line_ydxi] best 15037 combination zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] +Uplifting [line_ydxi] best 15150 combination zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] -Uplifting [line_xdyi] best 15037 combination zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] +Uplifting [line_xdyi] best 15150 combination zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] -Uplifting [line_ydxd] best 15037 combination zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] +Uplifting [line_ydxd] best 15150 combination zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] -Uplifting [line_xdyd] best 15037 combination zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] +Uplifting [line_xdyd] best 15150 combination zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:43 [ line::x1#0 ] -Uplifting [line] best 15037 combination zp ZP_BYTE:43 [ line::x1#0 ] +Uplifting [line] best 15150 combination zp ZP_BYTE:43 [ line::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:42 [ line::x0#0 ] -Uplifting [line] best 15037 combination zp ZP_BYTE:42 [ line::x0#0 ] +Uplifting [line] best 15150 combination zp ZP_BYTE:42 [ line::x0#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ plot::$6 ] -Uplifting [plot] best 15031 combination reg byte a [ plot::$6 ] +Uplifting [plot] best 15144 combination reg byte a [ plot::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] -Uplifting [line_ydxi] best 15031 combination zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] +Uplifting [line_ydxi] best 15144 combination zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] -Uplifting [line_xdyi] best 15031 combination zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] +Uplifting [line_xdyi] best 15144 combination zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] -Uplifting [line_ydxd] best 15031 combination zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] +Uplifting [line_ydxd] best 15144 combination zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] -Uplifting [line_xdyd] best 15031 combination zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] +Uplifting [line_xdyd] best 15144 combination zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:47 [ line::yd#1 ] -Uplifting [line] best 15031 combination zp ZP_BYTE:47 [ line::yd#1 ] +Uplifting [line] best 15144 combination zp ZP_BYTE:47 [ line::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:48 [ line::yd#0 ] -Uplifting [line] best 15031 combination zp ZP_BYTE:48 [ line::yd#0 ] +Uplifting [line] best 15144 combination zp ZP_BYTE:48 [ line::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:50 [ line::yd#3 ] -Uplifting [line] best 15031 combination zp ZP_BYTE:50 [ line::yd#3 ] +Uplifting [line] best 15144 combination zp ZP_BYTE:50 [ line::yd#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:51 [ line::yd#10 ] -Uplifting [line] best 15031 combination zp ZP_BYTE:51 [ line::yd#10 ] +Uplifting [line] best 15144 combination zp ZP_BYTE:51 [ line::yd#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:46 [ line::xd#1 ] -Uplifting [line] best 15031 combination zp ZP_BYTE:46 [ line::xd#1 ] +Uplifting [line] best 15144 combination zp ZP_BYTE:46 [ line::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ line::xd#0 ] -Uplifting [line] best 15031 combination zp ZP_BYTE:49 [ line::xd#0 ] +Uplifting [line] best 15144 combination zp ZP_BYTE:49 [ line::xd#0 ] Coalescing zero page register [ zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] ] with [ zp ZP_BYTE:73 [ init_plot_tables::$6 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] ] with [ zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] ] Coalescing zero page register [ 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 ] ] with [ zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] ] @@ -17305,12 +17307,12 @@ Coalescing zero page register [ zp ZP_BYTE:47 [ line::yd#1 line::yd#0 ] ] with [ Coalescing zero page register [ zp ZP_BYTE:47 [ line::yd#1 line::yd#0 line::yd#3 ] ] with [ zp ZP_BYTE:51 [ line::yd#10 ] ] Coalescing zero page register [ zp ZP_BYTE:47 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 ] ] with [ zp ZP_BYTE:69 [ line_xdyi::$8 ] ] Coalescing zero page register [ zp ZP_BYTE:47 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 line_xdyi::$8 ] ] with [ zp ZP_BYTE:71 [ line_xdyd::$8 ] ] -Coalescing zero page register [ zp ZP_PTR_BYTE:60 [ plot::plotter_y#1 ] ] with [ zp ZP_PTR_BYTE:63 [ plot::plotter_y#2 ] ] +Coalescing zero page register [ zp ZP_WORD:60 [ plot::plotter_y#1 ] ] with [ zp ZP_WORD:63 [ plot::plotter_y#2 ] ] Allocated (was zp ZP_BYTE:7) 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 ] Allocated (was zp ZP_BYTE:8) 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 ] Allocated (was zp ZP_PTR_BYTE:32) zp ZP_PTR_BYTE: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 ] Allocated (was zp ZP_BYTE:47) zp ZP_BYTE:10 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 line_xdyi::$8 line_xdyd::$8 ] -Allocated (was zp ZP_PTR_BYTE:60) zp ZP_PTR_BYTE:11 [ plot::plotter_y#1 plot::plotter_y#2 ] +Allocated (was zp ZP_WORD:60) zp ZP_WORD:11 [ plot::plotter_y#1 plot::plotter_y#2 ] Removing instruction jmp b10 Removing instruction jmp bend Removing instruction jmp b3 @@ -17399,16 +17401,16 @@ b10: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -17443,7 +17445,7 @@ lines: { .label l = 2 //SEG24 [11] phi from lines to lines::@1 [phi:lines->lines::@1] b1_from_lines: - //SEG25 [11] phi (byte) lines::l#2 = (byte) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 + //SEG25 [11] phi (byte) lines::l#2 = (byte/signed byte/word/signed word) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 lda #0 sta l jmp b1 @@ -17456,7 +17458,7 @@ lines: { ldx l lda lines_x,x tay - //SEG30 [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG30 [13] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx l lda lines_x+1,x sta _2 @@ -17464,7 +17466,7 @@ lines: { ldx l lda lines_y,x sta _3 - //SEG32 [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 + //SEG32 [15] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 ldx l lda lines_y+1,x tax @@ -17779,7 +17781,7 @@ line_ydxi: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG170 [87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG170 [87] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -17803,7 +17805,7 @@ line_ydxi: { jsr plot //SEG182 line_ydxi::@5 b5: - //SEG183 [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG183 [92] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG184 [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -17816,7 +17818,7 @@ line_ydxi: { bcs b2_from_b5 //SEG186 line_ydxi::@3 b3: - //SEG187 [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 + //SEG187 [95] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 inx //SEG188 [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -17830,7 +17832,7 @@ line_ydxi: { //SEG191 [97] phi (byte) line_ydxi::x#6 = (byte) line_ydxi::x#2 [phi:line_ydxi::@3/line_ydxi::@5->line_ydxi::@2#1] -- register_copy //SEG192 line_ydxi::@2 b2: - //SEG193 [98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG193 [98] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -17849,7 +17851,7 @@ plot: { .label plotter = 8 //SEG198 [102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_xby lda plot_xhi,x - //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -17859,15 +17861,15 @@ plot: { sta plotter_x //SEG202 [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_yhi,y - //SEG203 [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG203 [107] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG204 [108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_ylo,y - //SEG205 [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG205 [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -17896,7 +17898,7 @@ line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG213 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG213 [116] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -17920,7 +17922,7 @@ line_xdyi: { jsr plot //SEG225 line_xdyi::@5 b5: - //SEG226 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 + //SEG226 [121] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 inx //SEG227 [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -17933,7 +17935,7 @@ line_xdyi: { bcs b2_from_b5 //SEG229 line_xdyi::@3 b3: - //SEG230 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG230 [124] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG231 [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -17947,7 +17949,7 @@ line_xdyi: { //SEG234 [126] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy //SEG235 line_xdyi::@2 b2: - //SEG236 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG236 [127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -17967,7 +17969,7 @@ line_ydxd: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG241 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG241 [131] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -17991,7 +17993,7 @@ line_ydxd: { jsr plot //SEG253 line_ydxd::@5 b5: - //SEG254 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG254 [136] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG255 [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -18004,7 +18006,7 @@ line_ydxd: { bcs b2_from_b5 //SEG257 line_ydxd::@3 b3: - //SEG258 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 + //SEG258 [139] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 dex //SEG259 [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -18018,7 +18020,7 @@ line_ydxd: { //SEG262 [141] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy //SEG263 line_ydxd::@2 b2: - //SEG264 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG264 [142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -18038,7 +18040,7 @@ line_xdyd: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG269 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG269 [146] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -18062,7 +18064,7 @@ line_xdyd: { jsr plot //SEG281 line_xdyd::@5 b5: - //SEG282 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 + //SEG282 [151] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 inx //SEG283 [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -18075,7 +18077,7 @@ line_xdyd: { bcs b2_from_b5 //SEG285 line_xdyd::@3 b3: - //SEG286 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 + //SEG286 [154] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 dec y //SEG287 [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -18089,7 +18091,7 @@ line_xdyd: { //SEG290 [156] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy //SEG291 line_xdyd::@2 b2: - //SEG292 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG292 [157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -18108,9 +18110,9 @@ init_plot_tables: { .label yoffs = 8 //SEG297 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG300 [161] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] @@ -18119,7 +18121,7 @@ init_plot_tables: { //SEG302 [161] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG303 init_plot_tables::@1 b1: - //SEG304 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG304 [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG305 [163] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -18130,32 +18132,32 @@ init_plot_tables: { //SEG307 [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG308 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG308 [166] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG310 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG312 init_plot_tables::@2 b2: //SEG313 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG314 [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG314 [170] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1_from_b2 //SEG315 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs lda #0 sta yoffs+1 - //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 ldx #0 jmp b3 //SEG318 [171] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] @@ -18164,7 +18166,7 @@ init_plot_tables: { //SEG320 [171] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG321 init_plot_tables::@3 b3: - //SEG322 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG322 [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -18178,15 +18180,15 @@ init_plot_tables: { lda yoffs+1 //SEG327 [177] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG328 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG328 [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG329 [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG329 [179] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4_from_b3 //SEG330 init_plot_tables::@7 b7: - //SEG331 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG331 [180] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -18202,7 +18204,7 @@ init_plot_tables: { b4: //SEG335 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG336 [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG336 [183] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3_from_b4 //SEG337 init_plot_tables::@return @@ -18233,7 +18235,7 @@ init_screen: { //SEG346 [186] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG347 init_screen::@1 b1: - //SEG348 [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG348 [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #0 sta (b),y @@ -18242,7 +18244,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 @@ -18262,7 +18264,7 @@ init_screen: { //SEG354 [190] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG355 init_screen::@2 b2: - //SEG356 [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG356 [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -18271,7 +18273,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -18334,15 +18336,15 @@ b10: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -18377,7 +18379,7 @@ lines: { .label l = 2 //SEG24 [11] phi from lines to lines::@1 [phi:lines->lines::@1] b1_from_lines: - //SEG25 [11] phi (byte) lines::l#2 = (byte) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 + //SEG25 [11] phi (byte) lines::l#2 = (byte/signed byte/word/signed word) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 lda #0 sta l jmp b1 @@ -18390,7 +18392,7 @@ lines: { ldx l lda lines_x,x tay - //SEG30 [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG30 [13] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx l lda lines_x+1,x sta _2 @@ -18398,7 +18400,7 @@ lines: { ldx l lda lines_y,x sta _3 - //SEG32 [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 + //SEG32 [15] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 ldx l lda lines_y+1,x tax @@ -18709,7 +18711,7 @@ line_ydxi: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG170 [87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG170 [87] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -18733,7 +18735,7 @@ line_ydxi: { jsr plot //SEG182 line_ydxi::@5 b5: - //SEG183 [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG183 [92] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG184 [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -18746,7 +18748,7 @@ line_ydxi: { bcs b2_from_b5 //SEG186 line_ydxi::@3 b3: - //SEG187 [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 + //SEG187 [95] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 inx //SEG188 [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -18760,7 +18762,7 @@ line_ydxi: { //SEG191 [97] phi (byte) line_ydxi::x#6 = (byte) line_ydxi::x#2 [phi:line_ydxi::@3/line_ydxi::@5->line_ydxi::@2#1] -- register_copy //SEG192 line_ydxi::@2 b2: - //SEG193 [98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG193 [98] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -18779,7 +18781,7 @@ plot: { .label plotter = 8 //SEG198 [102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_xby lda plot_xhi,x - //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -18789,15 +18791,15 @@ plot: { sta plotter_x //SEG202 [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_yhi,y - //SEG203 [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG203 [107] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG204 [108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_ylo,y - //SEG205 [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG205 [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -18825,7 +18827,7 @@ line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG213 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG213 [116] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -18849,7 +18851,7 @@ line_xdyi: { jsr plot //SEG225 line_xdyi::@5 b5: - //SEG226 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 + //SEG226 [121] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 inx //SEG227 [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -18862,7 +18864,7 @@ line_xdyi: { bcs b2_from_b5 //SEG229 line_xdyi::@3 b3: - //SEG230 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG230 [124] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG231 [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -18876,7 +18878,7 @@ line_xdyi: { //SEG234 [126] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy //SEG235 line_xdyi::@2 b2: - //SEG236 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG236 [127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -18896,7 +18898,7 @@ line_ydxd: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG241 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG241 [131] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -18920,7 +18922,7 @@ line_ydxd: { jsr plot //SEG253 line_ydxd::@5 b5: - //SEG254 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG254 [136] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG255 [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -18933,7 +18935,7 @@ line_ydxd: { bcs b2_from_b5 //SEG257 line_ydxd::@3 b3: - //SEG258 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 + //SEG258 [139] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 dex //SEG259 [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -18947,7 +18949,7 @@ line_ydxd: { //SEG262 [141] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy //SEG263 line_ydxd::@2 b2: - //SEG264 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG264 [142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -18967,7 +18969,7 @@ line_xdyd: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG269 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG269 [146] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -18991,7 +18993,7 @@ line_xdyd: { jsr plot //SEG281 line_xdyd::@5 b5: - //SEG282 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 + //SEG282 [151] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 inx //SEG283 [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -19004,7 +19006,7 @@ line_xdyd: { bcs b2_from_b5 //SEG285 line_xdyd::@3 b3: - //SEG286 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 + //SEG286 [154] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 dec y //SEG287 [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -19018,7 +19020,7 @@ line_xdyd: { //SEG290 [156] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy //SEG291 line_xdyd::@2 b2: - //SEG292 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG292 [157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -19037,9 +19039,9 @@ init_plot_tables: { .label yoffs = 8 //SEG297 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG300 [161] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] @@ -19048,7 +19050,7 @@ init_plot_tables: { //SEG302 [161] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG303 init_plot_tables::@1 b1: - //SEG304 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG304 [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG305 [163] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -19059,31 +19061,31 @@ init_plot_tables: { //SEG307 [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG308 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG308 [166] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG310 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG312 init_plot_tables::@2 b2: //SEG313 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG314 [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG314 [170] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1_from_b2 //SEG315 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax jmp b3 //SEG318 [171] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] @@ -19092,7 +19094,7 @@ init_plot_tables: { //SEG320 [171] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG321 init_plot_tables::@3 b3: - //SEG322 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG322 [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -19106,15 +19108,15 @@ init_plot_tables: { lda yoffs+1 //SEG327 [177] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG328 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG328 [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG329 [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG329 [179] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4_from_b3 //SEG330 init_plot_tables::@7 b7: - //SEG331 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG331 [180] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -19130,7 +19132,7 @@ init_plot_tables: { b4: //SEG335 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG336 [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG336 [183] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3_from_b4 //SEG337 init_plot_tables::@return @@ -19161,7 +19163,7 @@ init_screen: { //SEG346 [186] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG347 init_screen::@1 b1: - //SEG348 [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG348 [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -19170,7 +19172,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 @@ -19190,7 +19192,7 @@ init_screen: { //SEG354 [190] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG355 init_screen::@2 b2: - //SEG356 [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG356 [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -19199,7 +19201,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -19295,15 +19297,15 @@ b10: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -19336,7 +19338,7 @@ lines: { .label l = 2 //SEG24 [11] phi from lines to lines::@1 [phi:lines->lines::@1] b1_from_lines: - //SEG25 [11] phi (byte) lines::l#2 = (byte) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 + //SEG25 [11] phi (byte) lines::l#2 = (byte/signed byte/word/signed word) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 lda #0 sta l jmp b1 @@ -19348,7 +19350,7 @@ lines: { ldx l lda lines_x,x tay - //SEG30 [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG30 [13] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx l lda lines_x+1,x sta _2 @@ -19356,7 +19358,7 @@ lines: { ldx l lda lines_y,x sta _3 - //SEG32 [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 + //SEG32 [15] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 ldx l lda lines_y+1,x tax @@ -19667,7 +19669,7 @@ line_ydxi: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG170 [87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG170 [87] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -19689,7 +19691,7 @@ line_ydxi: { jsr plot //SEG182 line_ydxi::@5 b5: - //SEG183 [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG183 [92] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG184 [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -19702,7 +19704,7 @@ line_ydxi: { bcs b2 //SEG186 line_ydxi::@3 b3: - //SEG187 [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 + //SEG187 [95] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 inx //SEG188 [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -19714,7 +19716,7 @@ line_ydxi: { //SEG191 [97] phi (byte) line_ydxi::x#6 = (byte) line_ydxi::x#2 [phi:line_ydxi::@3/line_ydxi::@5->line_ydxi::@2#1] -- register_copy //SEG192 line_ydxi::@2 b2: - //SEG193 [98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG193 [98] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -19733,7 +19735,7 @@ plot: { .label plotter = 8 //SEG198 [102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_xby lda plot_xhi,x - //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -19743,15 +19745,15 @@ plot: { sta plotter_x //SEG202 [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_yhi,y - //SEG203 [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG203 [107] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG204 [108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_ylo,y - //SEG205 [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG205 [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -19779,7 +19781,7 @@ line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG213 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG213 [116] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -19801,7 +19803,7 @@ line_xdyi: { jsr plot //SEG225 line_xdyi::@5 b5: - //SEG226 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 + //SEG226 [121] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 inx //SEG227 [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -19814,7 +19816,7 @@ line_xdyi: { bcs b2 //SEG229 line_xdyi::@3 b3: - //SEG230 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG230 [124] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG231 [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -19826,7 +19828,7 @@ line_xdyi: { //SEG234 [126] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy //SEG235 line_xdyi::@2 b2: - //SEG236 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG236 [127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -19846,7 +19848,7 @@ line_ydxd: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG241 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG241 [131] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -19868,7 +19870,7 @@ line_ydxd: { jsr plot //SEG253 line_ydxd::@5 b5: - //SEG254 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG254 [136] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG255 [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -19881,7 +19883,7 @@ line_ydxd: { bcs b2 //SEG257 line_ydxd::@3 b3: - //SEG258 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 + //SEG258 [139] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 dex //SEG259 [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -19893,7 +19895,7 @@ line_ydxd: { //SEG262 [141] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy //SEG263 line_ydxd::@2 b2: - //SEG264 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG264 [142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -19913,7 +19915,7 @@ line_xdyd: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG269 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG269 [146] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -19935,7 +19937,7 @@ line_xdyd: { jsr plot //SEG281 line_xdyd::@5 b5: - //SEG282 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 + //SEG282 [151] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 inx //SEG283 [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -19948,7 +19950,7 @@ line_xdyd: { bcs b2 //SEG285 line_xdyd::@3 b3: - //SEG286 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 + //SEG286 [154] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 dec y //SEG287 [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -19960,7 +19962,7 @@ line_xdyd: { //SEG290 [156] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy //SEG291 line_xdyd::@2 b2: - //SEG292 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG292 [157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -19979,9 +19981,9 @@ init_plot_tables: { .label yoffs = 8 //SEG297 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG300 [161] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] @@ -19989,7 +19991,7 @@ init_plot_tables: { //SEG302 [161] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG303 init_plot_tables::@1 b1: - //SEG304 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG304 [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG305 [163] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -20000,31 +20002,31 @@ init_plot_tables: { //SEG307 [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG308 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG308 [166] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG310 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG312 init_plot_tables::@2 b2: //SEG313 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG314 [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG314 [170] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG315 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax jmp b3 //SEG318 [171] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] @@ -20032,7 +20034,7 @@ init_plot_tables: { //SEG320 [171] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG321 init_plot_tables::@3 b3: - //SEG322 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG322 [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -20046,15 +20048,15 @@ init_plot_tables: { lda yoffs+1 //SEG327 [177] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG328 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG328 [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG329 [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG329 [179] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4 //SEG330 init_plot_tables::@7 b7: - //SEG331 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG331 [180] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -20068,7 +20070,7 @@ init_plot_tables: { b4: //SEG335 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG336 [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG336 [183] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG337 init_plot_tables::@return @@ -20097,7 +20099,7 @@ init_screen: { //SEG346 [186] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG347 init_screen::@1 b1: - //SEG348 [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG348 [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -20106,7 +20108,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 @@ -20125,7 +20127,7 @@ init_screen: { //SEG354 [190] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG355 init_screen::@2 b2: - //SEG356 [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG356 [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -20134,7 +20136,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 @@ -20234,15 +20236,15 @@ ASSEMBLER //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -20270,7 +20272,7 @@ lines: { .label _3 = 4 .label l = 2 //SEG24 [11] phi from lines to lines::@1 [phi:lines->lines::@1] - //SEG25 [11] phi (byte) lines::l#2 = (byte) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 + //SEG25 [11] phi (byte) lines::l#2 = (byte/signed byte/word/signed word) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 lda #0 sta l jmp b1 @@ -20282,7 +20284,7 @@ lines: { ldx l lda lines_x,x tay - //SEG30 [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG30 [13] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx l lda lines_x+1,x sta _2 @@ -20290,7 +20292,7 @@ lines: { ldx l lda lines_y,x sta _3 - //SEG32 [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 + //SEG32 [15] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 ldx l lda lines_y+1,x tax @@ -20584,7 +20586,7 @@ line_ydxi: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG170 [87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG170 [87] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -20604,7 +20606,7 @@ line_ydxi: { //SEG181 [101] phi (byte) plot::x#4 = (byte) plot::x#2 [phi:line_ydxi::@1->plot#1] -- register_copy jsr plot //SEG182 line_ydxi::@5 - //SEG183 [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG183 [92] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG184 [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -20616,7 +20618,7 @@ line_ydxi: { cmp e bcs b2 //SEG186 line_ydxi::@3 - //SEG187 [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 + //SEG187 [95] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 inx //SEG188 [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -20628,7 +20630,7 @@ line_ydxi: { //SEG191 [97] phi (byte) line_ydxi::x#6 = (byte) line_ydxi::x#2 [phi:line_ydxi::@3/line_ydxi::@5->line_ydxi::@2#1] -- register_copy //SEG192 line_ydxi::@2 b2: - //SEG193 [98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG193 [98] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -20646,7 +20648,7 @@ plot: { .label plotter = 8 //SEG198 [102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_xby lda plot_xhi,x - //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -20656,15 +20658,15 @@ plot: { sta plotter_x //SEG202 [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_yhi,y - //SEG203 [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG203 [107] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG204 [108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_ylo,y - //SEG205 [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG205 [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -20691,7 +20693,7 @@ line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG213 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG213 [116] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -20711,7 +20713,7 @@ line_xdyi: { //SEG224 [101] phi (byte) plot::x#4 = (byte) plot::x#0 [phi:line_xdyi::@1->plot#1] -- register_copy jsr plot //SEG225 line_xdyi::@5 - //SEG226 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 + //SEG226 [121] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 inx //SEG227 [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -20723,7 +20725,7 @@ line_xdyi: { cmp e bcs b2 //SEG229 line_xdyi::@3 - //SEG230 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG230 [124] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG231 [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -20735,7 +20737,7 @@ line_xdyi: { //SEG234 [126] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy //SEG235 line_xdyi::@2 b2: - //SEG236 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG236 [127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -20754,7 +20756,7 @@ line_ydxd: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG241 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG241 [131] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -20774,7 +20776,7 @@ line_ydxd: { //SEG252 [101] phi (byte) plot::x#4 = (byte) plot::x#3 [phi:line_ydxd::@1->plot#1] -- register_copy jsr plot //SEG253 line_ydxd::@5 - //SEG254 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG254 [136] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG255 [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -20786,7 +20788,7 @@ line_ydxd: { cmp e bcs b2 //SEG257 line_ydxd::@3 - //SEG258 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 + //SEG258 [139] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 dex //SEG259 [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -20798,7 +20800,7 @@ line_ydxd: { //SEG262 [141] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy //SEG263 line_ydxd::@2 b2: - //SEG264 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG264 [142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -20817,7 +20819,7 @@ line_xdyd: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG269 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG269 [146] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -20837,7 +20839,7 @@ line_xdyd: { //SEG280 [101] phi (byte) plot::x#4 = (byte) plot::x#1 [phi:line_xdyd::@1->plot#1] -- register_copy jsr plot //SEG281 line_xdyd::@5 - //SEG282 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 + //SEG282 [151] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 inx //SEG283 [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -20849,7 +20851,7 @@ line_xdyd: { cmp e bcs b2 //SEG285 line_xdyd::@3 - //SEG286 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 + //SEG286 [154] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 dec y //SEG287 [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -20861,7 +20863,7 @@ line_xdyd: { //SEG290 [156] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy //SEG291 line_xdyd::@2 b2: - //SEG292 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG292 [157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -20878,9 +20880,9 @@ init_plot_tables: { .label _6 = 2 .label yoffs = 8 //SEG297 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG300 [161] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] @@ -20888,7 +20890,7 @@ init_plot_tables: { //SEG302 [161] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG303 init_plot_tables::@1 b1: - //SEG304 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG304 [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG305 [163] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -20899,29 +20901,29 @@ init_plot_tables: { //SEG307 [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG308 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG308 [166] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG310 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG312 init_plot_tables::@2 b2: //SEG313 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG314 [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG314 [170] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG315 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax jmp b3 //SEG318 [171] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] @@ -20929,7 +20931,7 @@ init_plot_tables: { //SEG320 [171] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG321 init_plot_tables::@3 b3: - //SEG322 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG322 [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -20943,14 +20945,14 @@ init_plot_tables: { lda yoffs+1 //SEG327 [177] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG328 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG328 [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG329 [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG329 [179] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4 //SEG330 init_plot_tables::@7 - //SEG331 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG331 [180] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -20964,7 +20966,7 @@ init_plot_tables: { b4: //SEG335 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG336 [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG336 [183] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG337 init_plot_tables::@return @@ -20991,7 +20993,7 @@ init_screen: { //SEG346 [186] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG347 init_screen::@1 b1: - //SEG348 [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG348 [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -21000,7 +21002,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 @@ -21018,7 +21020,7 @@ init_screen: { //SEG354 [190] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG355 init_screen::@2 b2: - //SEG356 [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG356 [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -21027,7 +21029,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 @@ -21082,15 +21084,15 @@ ASSEMBLER //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -21118,7 +21120,7 @@ lines: { .label _3 = 4 .label l = 2 //SEG24 [11] phi from lines to lines::@1 [phi:lines->lines::@1] - //SEG25 [11] phi (byte) lines::l#2 = (byte) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 + //SEG25 [11] phi (byte) lines::l#2 = (byte/signed byte/word/signed word) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 lda #0 sta l //SEG26 [11] phi from lines::@3 to lines::@1 [phi:lines::@3->lines::@1] @@ -21129,7 +21131,7 @@ lines: { ldx l lda lines_x,x tay - //SEG30 [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG30 [13] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx l lda lines_x+1,x sta _2 @@ -21137,7 +21139,7 @@ lines: { ldx l lda lines_y,x sta _3 - //SEG32 [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 + //SEG32 [15] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 ldx l lda lines_y+1,x tax @@ -21431,7 +21433,7 @@ line_ydxi: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG170 [87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG170 [87] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -21451,7 +21453,7 @@ line_ydxi: { //SEG181 [101] phi (byte) plot::x#4 = (byte) plot::x#2 [phi:line_ydxi::@1->plot#1] -- register_copy jsr plot //SEG182 line_ydxi::@5 - //SEG183 [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG183 [92] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG184 [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -21463,7 +21465,7 @@ line_ydxi: { cmp e bcs b2 //SEG186 line_ydxi::@3 - //SEG187 [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 + //SEG187 [95] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 inx //SEG188 [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -21475,7 +21477,7 @@ line_ydxi: { //SEG191 [97] phi (byte) line_ydxi::x#6 = (byte) line_ydxi::x#2 [phi:line_ydxi::@3/line_ydxi::@5->line_ydxi::@2#1] -- register_copy //SEG192 line_ydxi::@2 b2: - //SEG193 [98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG193 [98] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -21493,7 +21495,7 @@ plot: { .label plotter = 8 //SEG198 [102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_xby lda plot_xhi,x - //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -21503,15 +21505,15 @@ plot: { sta plotter_x //SEG202 [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_yhi,y - //SEG203 [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG203 [107] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG204 [108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_ylo,y - //SEG205 [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG205 [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -21538,7 +21540,7 @@ line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG213 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG213 [116] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -21558,7 +21560,7 @@ line_xdyi: { //SEG224 [101] phi (byte) plot::x#4 = (byte) plot::x#0 [phi:line_xdyi::@1->plot#1] -- register_copy jsr plot //SEG225 line_xdyi::@5 - //SEG226 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 + //SEG226 [121] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 inx //SEG227 [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -21570,7 +21572,7 @@ line_xdyi: { cmp e bcs b2 //SEG229 line_xdyi::@3 - //SEG230 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG230 [124] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG231 [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -21582,7 +21584,7 @@ line_xdyi: { //SEG234 [126] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy //SEG235 line_xdyi::@2 b2: - //SEG236 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG236 [127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -21601,7 +21603,7 @@ line_ydxd: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG241 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG241 [131] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -21621,7 +21623,7 @@ line_ydxd: { //SEG252 [101] phi (byte) plot::x#4 = (byte) plot::x#3 [phi:line_ydxd::@1->plot#1] -- register_copy jsr plot //SEG253 line_ydxd::@5 - //SEG254 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG254 [136] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG255 [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -21633,7 +21635,7 @@ line_ydxd: { cmp e bcs b2 //SEG257 line_ydxd::@3 - //SEG258 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 + //SEG258 [139] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 dex //SEG259 [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -21645,7 +21647,7 @@ line_ydxd: { //SEG262 [141] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy //SEG263 line_ydxd::@2 b2: - //SEG264 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG264 [142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -21664,7 +21666,7 @@ line_xdyd: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG269 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG269 [146] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -21684,7 +21686,7 @@ line_xdyd: { //SEG280 [101] phi (byte) plot::x#4 = (byte) plot::x#1 [phi:line_xdyd::@1->plot#1] -- register_copy jsr plot //SEG281 line_xdyd::@5 - //SEG282 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 + //SEG282 [151] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 inx //SEG283 [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -21696,7 +21698,7 @@ line_xdyd: { cmp e bcs b2 //SEG285 line_xdyd::@3 - //SEG286 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 + //SEG286 [154] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 dec y //SEG287 [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -21708,7 +21710,7 @@ line_xdyd: { //SEG290 [156] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy //SEG291 line_xdyd::@2 b2: - //SEG292 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG292 [157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -21725,16 +21727,16 @@ init_plot_tables: { .label _6 = 2 .label yoffs = 8 //SEG297 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 //SEG300 [161] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] //SEG301 [161] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy //SEG302 [161] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG303 init_plot_tables::@1 b1: - //SEG304 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG304 [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG305 [163] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -21745,36 +21747,36 @@ init_plot_tables: { //SEG307 [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG308 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG308 [166] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG310 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG312 init_plot_tables::@2 b2: //SEG313 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG314 [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG314 [170] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG315 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax //SEG318 [171] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] //SEG319 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy //SEG320 [171] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG321 init_plot_tables::@3 b3: - //SEG322 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG322 [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -21788,14 +21790,14 @@ init_plot_tables: { lda yoffs+1 //SEG327 [177] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG328 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG328 [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG329 [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG329 [179] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4 //SEG330 init_plot_tables::@7 - //SEG331 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG331 [180] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -21809,7 +21811,7 @@ init_plot_tables: { b4: //SEG335 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG336 [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG336 [183] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG337 init_plot_tables::@return @@ -21835,7 +21837,7 @@ init_screen: { //SEG346 [186] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG347 init_screen::@1 b1: - //SEG348 [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG348 [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -21844,7 +21846,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 @@ -21861,7 +21863,7 @@ init_screen: { //SEG354 [190] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG355 init_screen::@2 b2: - //SEG356 [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG356 [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -21870,7 +21872,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 @@ -21889,13 +21891,13 @@ FINAL SYMBOL TABLE (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = (word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 BITMAP = (word) 8192 +(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 (byte) BMM -(const byte) BMM#0 BMM = (byte) 32 +(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (byte*) COLS (const byte*) COLS#0 COLS = (word) 55296 (byte) CSEL -(const byte) CSEL#0 CSEL = (byte) 8 +(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (byte*) D011 (const byte*) D011#0 D011 = (word) 53265 (byte*) D016 @@ -21903,19 +21905,19 @@ FINAL SYMBOL TABLE (byte*) D018 (const byte*) D018#0 D018 = (word) 53272 (byte) DEN -(const byte) DEN#0 DEN = (byte) 16 +(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (byte) ECM -(const byte) ECM#0 ECM = (byte) 64 +(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (byte*) FGCOL (const byte*) FGCOL#0 FGCOL = (word) 53281 (byte) MCM -(const byte) MCM#0 MCM = (byte) 16 +(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (byte) RSEL -(const byte) RSEL#0 RSEL = (byte) 8 +(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8 (byte) RST8 -(const byte) RST8#0 RST8 = (byte) 128 +(const byte) RST8#0 RST8 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = (word) 53270 (void()) init_plot_tables() @@ -22152,11 +22154,11 @@ FINAL SYMBOL TABLE (byte) lines::l#1 l zp ZP_BYTE:2 151.5 (byte) lines::l#2 l zp ZP_BYTE:2 60.6 (byte) lines_cnt -(const byte) lines_cnt#0 lines_cnt = (byte) 8 +(const byte) lines_cnt#0 lines_cnt = (byte/signed byte/word/signed word) 8 (byte[]) lines_x -(const byte[]) lines_x#0 lines_x = { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } +(const byte[]) lines_x#0 lines_x = { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } (byte[]) lines_y -(const byte[]) lines_y#0 lines_y = { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } +(const byte[]) lines_y#0 lines_y = { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } (void()) main() (label) main::@1 (label) main::@3 @@ -22175,9 +22177,9 @@ FINAL SYMBOL TABLE (byte*) plot::plotter_x (byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:8 2.0 (byte*) plot::plotter_x#2 plotter_x zp ZP_PTR_BYTE:8 0.8 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:11 2.0 -(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:11 4.0 +(word) plot::plotter_y +(word) plot::plotter_y#1 plotter_y zp ZP_WORD:11 2.0 +(word) plot::plotter_y#2 plotter_y zp ZP_WORD:11 4.0 (byte) plot::x (byte) plot::x#0 reg byte x 11.0 (byte) plot::x#1 reg byte x 11.0 @@ -22191,15 +22193,15 @@ FINAL SYMBOL TABLE (byte) plot::y#3 reg byte y 22.0 (byte) plot::y#4 reg byte y 6.857142857142857 (byte[]) plot_bit -(const byte[]) plot_bit#0 plot_bit = (word) 5120 +(const byte[]) plot_bit#0 plot_bit = (word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 plot_xhi = (word) 4352 +(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 plot_xlo = (word) 4096 +(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 plot_yhi = (word) 4864 +(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 plot_ylo = (word) 4608 +(const byte[]) plot_ylo#0 plot_ylo = (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 ] @@ -22225,7 +22227,7 @@ reg byte a [ line_ydxi::$8 ] reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] -zp ZP_PTR_BYTE:11 [ plot::plotter_y#1 plot::plotter_y#2 ] +zp ZP_WORD:11 [ plot::plotter_y#1 plot::plotter_y#2 ] reg byte a [ plot::$3 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] @@ -22273,15 +22275,15 @@ FINAL CODE //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -22309,7 +22311,7 @@ lines: { .label _3 = 4 .label l = 2 //SEG24 [11] phi from lines to lines::@1 [phi:lines->lines::@1] - //SEG25 [11] phi (byte) lines::l#2 = (byte) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 + //SEG25 [11] phi (byte) lines::l#2 = (byte/signed byte/word/signed word) 0 [phi:lines->lines::@1#0] -- zpby1=coby1 lda #0 sta l //SEG26 [11] phi from lines::@3 to lines::@1 [phi:lines::@3->lines::@1] @@ -22320,7 +22322,7 @@ lines: { ldx l lda lines_x,x tay - //SEG30 [13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG30 [13] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx l lda lines_x+1,x sta _2 @@ -22328,7 +22330,7 @@ lines: { ldx l lda lines_y,x sta _3 - //SEG32 [15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 + //SEG32 [15] (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:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ) -- xby=cowo1_derefidx_zpby1 ldx l lda lines_y+1,x tax @@ -22622,7 +22624,7 @@ line_ydxi: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG170 [87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG170 [87] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -22642,7 +22644,7 @@ line_ydxi: { //SEG181 [101] phi (byte) plot::x#4 = (byte) plot::x#2 [phi:line_ydxi::@1->plot#1] -- register_copy jsr plot //SEG182 line_ydxi::@5 - //SEG183 [92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG183 [92] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG184 [93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -22654,7 +22656,7 @@ line_ydxi: { cmp e bcs b2 //SEG186 line_ydxi::@3 - //SEG187 [95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 + //SEG187 [95] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- xby=xby_plus_1 inx //SEG188 [96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -22666,7 +22668,7 @@ line_ydxi: { //SEG191 [97] phi (byte) line_ydxi::x#6 = (byte) line_ydxi::x#2 [phi:line_ydxi::@3/line_ydxi::@5->line_ydxi::@2#1] -- register_copy //SEG192 line_ydxi::@2 b2: - //SEG193 [98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG193 [98] (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:0::lines:7::line:20::line_ydxi:41 [ 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:0::lines:7::line:20::line_ydxi:85 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -22684,7 +22686,7 @@ plot: { .label plotter = 8 //SEG198 [102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_xby lda plot_xhi,x - //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG199 [103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -22694,15 +22696,15 @@ plot: { sta plotter_x //SEG202 [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_yhi,y - //SEG203 [107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=coby1_sethi_aby + //SEG203 [107] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG204 [108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- aby=cowo1_derefidx_yby lda plot_ylo,y - //SEG205 [109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG205 [109] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG206 [110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:120 [ 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:0::lines:7::line:20::line_xdyi:79::plot:120 [ 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:0::lines:7::line:20::line_ydxd:55::plot:135 [ 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:0::lines:7::line:20::line_ydxd:71::plot:135 [ 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:0::lines:7::line:20::line_xdyd:49::plot:150 [ 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:0::lines:7::line:20::line_xdyd:65::plot:150 [ 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 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -22729,7 +22731,7 @@ line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG213 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG213 [116] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -22749,7 +22751,7 @@ line_xdyi: { //SEG224 [101] phi (byte) plot::x#4 = (byte) plot::x#0 [phi:line_xdyi::@1->plot#1] -- register_copy jsr plot //SEG225 line_xdyi::@5 - //SEG226 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 + //SEG226 [121] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- xby=xby_plus_1 inx //SEG227 [122] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -22761,7 +22763,7 @@ line_xdyi: { cmp e bcs b2 //SEG229 line_xdyi::@3 - //SEG230 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG230 [124] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG231 [125] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -22773,7 +22775,7 @@ line_xdyi: { //SEG234 [126] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy //SEG235 line_xdyi::@2 b2: - //SEG236 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG236 [127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -22792,7 +22794,7 @@ line_ydxd: { .label yd = 4 .label xd = 3 .label e = 7 - //SEG241 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG241 [131] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby2_ror_1 lda xd lsr sta e @@ -22812,7 +22814,7 @@ line_ydxd: { //SEG252 [101] phi (byte) plot::x#4 = (byte) plot::x#3 [phi:line_ydxd::@1->plot#1] -- register_copy jsr plot //SEG253 line_ydxd::@5 - //SEG254 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 + //SEG254 [136] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_1 inc y //SEG255 [137] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -22824,7 +22826,7 @@ line_ydxd: { cmp e bcs b2 //SEG257 line_ydxd::@3 - //SEG258 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 + //SEG258 [139] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- xby=xby_minus_1 dex //SEG259 [140] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -22836,7 +22838,7 @@ line_ydxd: { //SEG262 [141] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy //SEG263 line_ydxd::@2 b2: - //SEG264 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 + //SEG264 [142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] ) -- aby=zpby1_plus_1 lda y1 clc adc #1 @@ -22855,7 +22857,7 @@ line_xdyd: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG269 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 + //SEG269 [146] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_ror_1 lda yd lsr sta e @@ -22875,7 +22877,7 @@ line_xdyd: { //SEG280 [101] phi (byte) plot::x#4 = (byte) plot::x#1 [phi:line_xdyd::@1->plot#1] -- register_copy jsr plot //SEG281 line_xdyd::@5 - //SEG282 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 + //SEG282 [151] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- xby=xby_plus_1 inx //SEG283 [152] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_plus_zpby2 lda e @@ -22887,7 +22889,7 @@ line_xdyd: { cmp e bcs b2 //SEG285 line_xdyd::@3 - //SEG286 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 + //SEG286 [154] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_1 dec y //SEG287 [155] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby1_minus_zpby2 lda e @@ -22899,7 +22901,7 @@ line_xdyd: { //SEG290 [156] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy //SEG291 line_xdyd::@2 b2: - //SEG292 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 + //SEG292 [157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] ) -- zpby1=zpby2_plus_1 lda x1 clc adc #1 @@ -22916,16 +22918,16 @@ init_plot_tables: { .label _6 = 2 .label yoffs = 8 //SEG297 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG298 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG299 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 //SEG300 [161] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] //SEG301 [161] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy //SEG302 [161] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG303 init_plot_tables::@1 b1: - //SEG304 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG304 [162] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG305 [163] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -22936,36 +22938,36 @@ init_plot_tables: { //SEG307 [165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG308 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG308 [166] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG309 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG310 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG311 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG312 init_plot_tables::@2 b2: //SEG313 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG314 [170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG314 [170] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG315 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG317 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax //SEG318 [171] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] //SEG319 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy //SEG320 [171] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG321 init_plot_tables::@3 b3: - //SEG322 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG322 [172] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -22979,14 +22981,14 @@ init_plot_tables: { lda yoffs+1 //SEG327 [177] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG328 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG328 [178] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG329 [179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG329 [179] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4 //SEG330 init_plot_tables::@7 - //SEG331 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG331 [180] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -23000,7 +23002,7 @@ init_plot_tables: { b4: //SEG335 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG336 [183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG336 [183] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG337 init_plot_tables::@return @@ -23026,7 +23028,7 @@ init_screen: { //SEG346 [186] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG347 init_screen::@1 b1: - //SEG348 [187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG348 [187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -23035,7 +23037,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG350 [189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 @@ -23052,7 +23054,7 @@ init_screen: { //SEG354 [190] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG355 init_screen::@2 b2: - //SEG356 [191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG356 [191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -23061,7 +23063,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG358 [193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.sym b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.sym index a94d1e4b1..1e3e91a07 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.sym @@ -4,13 +4,13 @@ (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = (word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 BITMAP = (word) 8192 +(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 (byte) BMM -(const byte) BMM#0 BMM = (byte) 32 +(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (byte*) COLS (const byte*) COLS#0 COLS = (word) 55296 (byte) CSEL -(const byte) CSEL#0 CSEL = (byte) 8 +(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (byte*) D011 (const byte*) D011#0 D011 = (word) 53265 (byte*) D016 @@ -18,19 +18,19 @@ (byte*) D018 (const byte*) D018#0 D018 = (word) 53272 (byte) DEN -(const byte) DEN#0 DEN = (byte) 16 +(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (byte) ECM -(const byte) ECM#0 ECM = (byte) 64 +(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (byte*) FGCOL (const byte*) FGCOL#0 FGCOL = (word) 53281 (byte) MCM -(const byte) MCM#0 MCM = (byte) 16 +(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (byte) RSEL -(const byte) RSEL#0 RSEL = (byte) 8 +(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8 (byte) RST8 -(const byte) RST8#0 RST8 = (byte) 128 +(const byte) RST8#0 RST8 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = (word) 53270 (void()) init_plot_tables() @@ -267,11 +267,11 @@ (byte) lines::l#1 l zp ZP_BYTE:2 151.5 (byte) lines::l#2 l zp ZP_BYTE:2 60.6 (byte) lines_cnt -(const byte) lines_cnt#0 lines_cnt = (byte) 8 +(const byte) lines_cnt#0 lines_cnt = (byte/signed byte/word/signed word) 8 (byte[]) lines_x -(const byte[]) lines_x#0 lines_x = { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 } +(const byte[]) lines_x#0 lines_x = { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 } (byte[]) lines_y -(const byte[]) lines_y#0 lines_y = { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 } +(const byte[]) lines_y#0 lines_y = { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 } (void()) main() (label) main::@1 (label) main::@3 @@ -290,9 +290,9 @@ (byte*) plot::plotter_x (byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:8 2.0 (byte*) plot::plotter_x#2 plotter_x zp ZP_PTR_BYTE:8 0.8 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:11 2.0 -(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:11 4.0 +(word) plot::plotter_y +(word) plot::plotter_y#1 plotter_y zp ZP_WORD:11 2.0 +(word) plot::plotter_y#2 plotter_y zp ZP_WORD:11 4.0 (byte) plot::x (byte) plot::x#0 reg byte x 11.0 (byte) plot::x#1 reg byte x 11.0 @@ -306,15 +306,15 @@ (byte) plot::y#3 reg byte y 22.0 (byte) plot::y#4 reg byte y 6.857142857142857 (byte[]) plot_bit -(const byte[]) plot_bit#0 plot_bit = (word) 5120 +(const byte[]) plot_bit#0 plot_bit = (word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 plot_xhi = (word) 4352 +(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 plot_xlo = (word) 4096 +(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 plot_yhi = (word) 4864 +(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 plot_ylo = (word) 4608 +(const byte[]) plot_ylo#0 plot_ylo = (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 ] @@ -340,7 +340,7 @@ reg byte a [ line_ydxi::$8 ] reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] -zp ZP_PTR_BYTE:11 [ plot::plotter_y#1 plot::plotter_y#2 ] +zp ZP_WORD:11 [ plot::plotter_y#1 plot::plotter_y#2 ] reg byte a [ plot::$3 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.cfg b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.cfg index 76c1eed94..570fc3303 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.cfg @@ -5,17 +5,17 @@ to:@end @end: scope:[] from @5 main: scope:[main] from @5 - [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) - [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) - [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) - [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) + [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) + [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) [5] call init_screen param-assignment [ ] ( main:0 [ ] ) to:main::@5 main::@5: scope:[main] from main [6] call init_plot_tables param-assignment [ ] ( main:0 [ ] ) to:main::@2 main::@2: scope:[main] from main::@2 main::@5 main::@7 - [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) + [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) to:main::@3 main::@3: scope:[main] from main::@2 [8] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) @@ -32,7 +32,7 @@ plots: scope:[plots] from main::@3 [13] phi() [ ] ( main:0::plots:9 [ ] ) to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 - [14] (byte) plots::i#2 ← phi( plots/(byte) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:0::plots:9 [ plots::i#2 ] ) + [14] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:0::plots:9 [ plots::i#2 ] ) [15] (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 ] ( main:0::plots:9 [ plots::i#2 plots::$0 ] ) [16] (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 plots::$1 ] ( main:0::plots:9 [ plots::i#2 plots::$0 plots::$1 ] ) [17] (byte) plot::x#0 ← (byte~) plots::$0 [ plots::i#2 plots::$1 plot::x#0 ] ( main:0::plots:9 [ plots::i#2 plots::$1 plot::x#0 ] ) @@ -48,14 +48,14 @@ plots::@return: scope:[plots] from plots::@3 to:@return plot: scope:[plot] from plots::@1 [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) - [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) + [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) [25] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ) [26] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) [27] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) - [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) + [28] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) [29] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) - [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) - [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) + [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) + [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) [32] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::plotter#0 plot::$5 ] ) [33] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::plotter#0 plot::$6 ] ) [34] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::plots:9::plot:19 [ plots::i#2 ] ) @@ -67,39 +67,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 [36] phi() [ ] ( main:0::init_plot_tables:6 [ ] ) to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [37] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [37] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) + [37] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [37] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) [39] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) [40] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) - [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) + [42] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [44] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) + [44] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) - [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [46] 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:0::init_plot_tables:6 [ 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 - [47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [47] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) + [47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [47] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) [49] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) [50] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) [51] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) [52] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) [53] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) - [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) + [55] 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:0::init_plot_tables:6 [ 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 - [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) + [56] (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:0::init_plot_tables:6 [ 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 [57] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) - [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [59] 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:0::init_plot_tables:6 [ 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 [60] return [ ] ( main:0::init_plot_tables:6 [ ] ) @@ -111,15 +111,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 [62] (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:0::init_screen:5 [ init_screen::b#2 ] ) - [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) + [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) - [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) + [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 [66] (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:0::init_screen:5 [ init_screen::c#2 ] ) - [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) + [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) - [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) + [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 [70] return [ ] ( main:0::init_screen:5 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log index 917e3259c..e3a451f00 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log @@ -51,7 +51,7 @@ const byte[] plot_bit = $1400; void plot(byte x, byte y) { byte* plotter_x = 0; - byte* plotter_y = 0; + word plotter_y = 0; >plotter_x = plot_xhi[x]; // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; plotter_y = plot_yhi[y]; @@ -101,34 +101,34 @@ Fixing lo/hi-lvalue hi=(plot::plotter_y) ← plot::$2 Fixing lo/hi-lvalue lo=(plot::plotter_y) ← plot::$3 PROGRAM (byte*) D011 ← (word) 53265 - (byte) RST8 ← (byte) 128 - (byte) ECM ← (byte) 64 - (byte) BMM ← (byte) 32 - (byte) DEN ← (byte) 16 - (byte) RSEL ← (byte) 8 + (byte) RST8 ← (byte/word/signed word) 128 + (byte) ECM ← (byte/signed byte/word/signed word) 64 + (byte) BMM ← (byte/signed byte/word/signed word) 32 + (byte) DEN ← (byte/signed byte/word/signed word) 16 + (byte) RSEL ← (byte/signed byte/word/signed word) 8 (byte*) RASTER ← (word) 53266 (byte*) D016 ← (word) 53270 - (byte) MCM ← (byte) 16 - (byte) CSEL ← (byte) 8 + (byte) MCM ← (byte/signed byte/word/signed word) 16 + (byte) CSEL ← (byte/signed byte/word/signed word) 8 (byte*) D018 ← (word) 53272 (byte*) BGCOL ← (word) 53280 (byte*) FGCOL ← (word) 53281 (byte*) COLS ← (word) 55296 - (byte*) SCREEN ← (word) 1024 - (byte*) BITMAP ← (word) 8192 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) BITMAP ← (word/signed word) 8192 proc (void()) main() - *((byte*) BGCOL) ← (byte) 0 - *((byte*) FGCOL) ← (byte) 0 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM | (byte) DEN (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011) ← (byte~) main::$2 - *((byte*) D018) ← (byte) 24 + *((byte*) D018) ← (byte/signed byte/word/signed word) 24 (void~) main::$3 ← call init_screen (void~) main::$4 ← call init_plot_tables main::@1: main::@2: - (boolean~) main::$5 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 *((byte*) BGCOL) ← ++ *((byte*) BGCOL) (void~) main::$6 ← call plots @@ -137,11 +137,11 @@ main::@2: main::@return: return endproc // main() - (byte[]) plots_x ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt ← (byte) 8 + (byte[]) plots_x ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt ← (byte/signed byte/word/signed word) 8 proc (void()) plots() - (byte) plots::i ← (byte) 0 + (byte) plots::i ← (byte/signed byte/word/signed word) 0 plots::@1: (byte~) plots::$0 ← (byte[]) plots_x *idx (byte) plots::i (byte~) plots::$1 ← (byte[]) plots_y *idx (byte) plots::i @@ -152,24 +152,24 @@ plots::@1: plots::@return: return endproc // plots() - (byte[]) plot_xlo ← (word) 4096 - (byte[]) plot_xhi ← (word) 4352 - (byte[]) plot_ylo ← (word) 4608 - (byte[]) plot_yhi ← (word) 4864 - (byte[]) plot_bit ← (word) 5120 + (byte[]) plot_xlo ← (word/signed word) 4096 + (byte[]) plot_xhi ← (word/signed word) 4352 + (byte[]) plot_ylo ← (word/signed word) 4608 + (byte[]) plot_yhi ← (word/signed word) 4864 + (byte[]) plot_bit ← (word/signed word) 5120 proc (void()) plot((byte) plot::x , (byte) plot::y) - (byte*) plot::plotter_x ← (byte) 0 - (byte*) plot::plotter_y ← (byte) 0 + (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y hi= (byte~) plot::$2 + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x + (byte*) plot::plotter_y - (byte*) plot::plotter ← (byte~) plot::$4 + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 *((byte*) plot::plotter) ← (byte~) plot::$6 @@ -177,42 +177,42 @@ plot::@return: return endproc // plot() proc (void()) init_plot_tables() - (byte) init_plot_tables::bits ← (byte) 128 - (byte) init_plot_tables::x ← (byte) 0 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 + (byte) init_plot_tables::x ← (byte/signed byte/word/signed word) 0 init_plot_tables::@1: - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word) 248 *((byte[]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP *((byte[]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 - (byte) init_plot_tables::bits ← (byte) 128 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 init_plot_tables::@2: (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 - (byte*) init_plot_tables::yoffs ← (byte) 0 - (byte) init_plot_tables::y ← (byte) 0 + (byte*) init_plot_tables::yoffs ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y ← (byte/signed byte/word/signed word) 0 init_plot_tables::@3: - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs *((byte[]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word/signed word) 320 (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$13 init_plot_tables::@4: (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 init_plot_tables::@return: return @@ -220,16 +220,16 @@ endproc // init_plot_tables() proc (void()) init_screen() (byte*) init_screen::b ← (byte*) BITMAP init_screen::@1: - *((byte*) init_screen::b) ← (byte) 0 + *((byte*) init_screen::b) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b ← ++ (byte*) init_screen::b - (byte*~) init_screen::$0 ← (byte*) BITMAP + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 (byte*) init_screen::c ← (byte*) SCREEN init_screen::@2: - *((byte*) init_screen::c) ← (byte) 20 + *((byte*) init_screen::c) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c ← ++ (byte*) init_screen::c - (byte*~) init_screen::$2 ← (byte*) SCREEN + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 init_screen::@return: @@ -305,13 +305,13 @@ SYMBOLS (byte~) plot::$1 (byte~) plot::$2 (byte~) plot::$3 -(byte~) plot::$4 +(byte*~) plot::$4 (byte~) plot::$5 (byte~) plot::$6 (label) plot::@return (byte*) plot::plotter (byte*) plot::plotter_x -(byte*) plot::plotter_y +(word) plot::plotter_y (byte) plot::x (byte) plot::y (byte[]) plot_bit @@ -334,37 +334,37 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from (byte*) D011 ← (word) 53265 - (byte) RST8 ← (byte) 128 - (byte) ECM ← (byte) 64 - (byte) BMM ← (byte) 32 - (byte) DEN ← (byte) 16 - (byte) RSEL ← (byte) 8 + (byte) RST8 ← (byte/word/signed word) 128 + (byte) ECM ← (byte/signed byte/word/signed word) 64 + (byte) BMM ← (byte/signed byte/word/signed word) 32 + (byte) DEN ← (byte/signed byte/word/signed word) 16 + (byte) RSEL ← (byte/signed byte/word/signed word) 8 (byte*) RASTER ← (word) 53266 (byte*) D016 ← (word) 53270 - (byte) MCM ← (byte) 16 - (byte) CSEL ← (byte) 8 + (byte) MCM ← (byte/signed byte/word/signed word) 16 + (byte) CSEL ← (byte/signed byte/word/signed word) 8 (byte*) D018 ← (word) 53272 (byte*) BGCOL ← (word) 53280 (byte*) FGCOL ← (word) 53281 (byte*) COLS ← (word) 55296 - (byte*) SCREEN ← (word) 1024 - (byte*) BITMAP ← (word) 8192 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) BITMAP ← (word/signed word) 8192 to:@1 main: scope:[main] from - *((byte*) BGCOL) ← (byte) 0 - *((byte*) FGCOL) ← (byte) 0 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM | (byte) DEN (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011) ← (byte~) main::$2 - *((byte*) D018) ← (byte) 24 + *((byte*) D018) ← (byte/signed byte/word/signed word) 24 (void~) main::$3 ← call init_screen (void~) main::$4 ← call init_plot_tables to:main::@1 main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - (boolean~) main::$5 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -379,12 +379,12 @@ main::@return: scope:[main] from main::@4 return to:@return @1: scope:[] from @begin - (byte[]) plots_x ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt ← (byte) 8 + (byte[]) plots_x ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from - (byte) plots::i ← (byte) 0 + (byte) plots::i ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@1 (byte~) plots::$0 ← (byte[]) plots_x *idx (byte) plots::i @@ -400,25 +400,25 @@ plots::@return: scope:[plots] from plots::@2 return to:@return @2: scope:[] from @1 - (byte[]) plot_xlo ← (word) 4096 - (byte[]) plot_xhi ← (word) 4352 - (byte[]) plot_ylo ← (word) 4608 - (byte[]) plot_yhi ← (word) 4864 - (byte[]) plot_bit ← (word) 5120 + (byte[]) plot_xlo ← (word/signed word) 4096 + (byte[]) plot_xhi ← (word/signed word) 4352 + (byte[]) plot_ylo ← (word/signed word) 4608 + (byte[]) plot_yhi ← (word/signed word) 4864 + (byte[]) plot_bit ← (word/signed word) 5120 to:@3 plot: scope:[plot] from - (byte*) plot::plotter_x ← (byte) 0 - (byte*) plot::plotter_y ← (byte) 0 + (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y hi= (byte~) plot::$2 + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x + (byte*) plot::plotter_y - (byte*) plot::plotter ← (byte~) plot::$4 + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 *((byte*) plot::plotter) ← (byte~) plot::$6 @@ -429,52 +429,52 @@ plot::@return: scope:[plot] from plot @3: scope:[] from @2 to:@4 init_plot_tables: scope:[init_plot_tables] from - (byte) init_plot_tables::bits ← (byte) 128 - (byte) init_plot_tables::x ← (byte) 0 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 + (byte) init_plot_tables::x ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word) 248 *((byte[]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP *((byte[]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits ← (byte) 128 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs ← (byte) 0 - (byte) init_plot_tables::y ← (byte) 0 + (byte*) init_plot_tables::yoffs ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs *((byte[]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@8 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word/signed word) 320 (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@8: scope:[init_plot_tables] from init_plot_tables::@4 @@ -488,9 +488,9 @@ init_screen: scope:[init_screen] from (byte*) init_screen::b ← (byte*) BITMAP to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - *((byte*) init_screen::b) ← (byte) 0 + *((byte*) init_screen::b) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b ← ++ (byte*) init_screen::b - (byte*~) init_screen::$0 ← (byte*) BITMAP + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -498,9 +498,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 (byte*) init_screen::c ← (byte*) SCREEN to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 - *((byte*) init_screen::c) ← (byte) 20 + *((byte*) init_screen::c) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c ← ++ (byte*) init_screen::c - (byte*~) init_screen::$2 ← (byte*) SCREEN + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@4 @@ -523,37 +523,37 @@ Removing empty block init_screen::@4 CONTROL FLOW GRAPH @begin: scope:[] from (byte*) D011 ← (word) 53265 - (byte) RST8 ← (byte) 128 - (byte) ECM ← (byte) 64 - (byte) BMM ← (byte) 32 - (byte) DEN ← (byte) 16 - (byte) RSEL ← (byte) 8 + (byte) RST8 ← (byte/word/signed word) 128 + (byte) ECM ← (byte/signed byte/word/signed word) 64 + (byte) BMM ← (byte/signed byte/word/signed word) 32 + (byte) DEN ← (byte/signed byte/word/signed word) 16 + (byte) RSEL ← (byte/signed byte/word/signed word) 8 (byte*) RASTER ← (word) 53266 (byte*) D016 ← (word) 53270 - (byte) MCM ← (byte) 16 - (byte) CSEL ← (byte) 8 + (byte) MCM ← (byte/signed byte/word/signed word) 16 + (byte) CSEL ← (byte/signed byte/word/signed word) 8 (byte*) D018 ← (word) 53272 (byte*) BGCOL ← (word) 53280 (byte*) FGCOL ← (word) 53281 (byte*) COLS ← (word) 55296 - (byte*) SCREEN ← (word) 1024 - (byte*) BITMAP ← (word) 8192 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) BITMAP ← (word/signed word) 8192 to:@1 main: scope:[main] from - *((byte*) BGCOL) ← (byte) 0 - *((byte*) FGCOL) ← (byte) 0 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM | (byte) DEN (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011) ← (byte~) main::$2 - *((byte*) D018) ← (byte) 24 + *((byte*) D018) ← (byte/signed byte/word/signed word) 24 (void~) main::$3 ← call init_screen (void~) main::$4 ← call init_plot_tables to:main::@2 main::@1: scope:[main] from main::@3 to:main::@2 main::@2: scope:[main] from main main::@1 main::@2 - (boolean~) main::$5 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -566,12 +566,12 @@ main::@return: scope:[main] from main::@3 return to:@return @1: scope:[] from @begin - (byte[]) plots_x ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt ← (byte) 8 + (byte[]) plots_x ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from - (byte) plots::i ← (byte) 0 + (byte) plots::i ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@1 (byte~) plots::$0 ← (byte[]) plots_x *idx (byte) plots::i @@ -585,25 +585,25 @@ plots::@return: scope:[plots] from plots::@1 return to:@return @2: scope:[] from @1 - (byte[]) plot_xlo ← (word) 4096 - (byte[]) plot_xhi ← (word) 4352 - (byte[]) plot_ylo ← (word) 4608 - (byte[]) plot_yhi ← (word) 4864 - (byte[]) plot_bit ← (word) 5120 + (byte[]) plot_xlo ← (word/signed word) 4096 + (byte[]) plot_xhi ← (word/signed word) 4352 + (byte[]) plot_ylo ← (word/signed word) 4608 + (byte[]) plot_yhi ← (word/signed word) 4864 + (byte[]) plot_bit ← (word/signed word) 5120 to:@5 plot: scope:[plot] from - (byte*) plot::plotter_x ← (byte) 0 - (byte*) plot::plotter_y ← (byte) 0 + (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y hi= (byte~) plot::$2 + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x + (byte*) plot::plotter_y - (byte*) plot::plotter ← (byte~) plot::$4 + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 *((byte*) plot::plotter) ← (byte~) plot::$6 @@ -612,52 +612,52 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from - (byte) init_plot_tables::bits ← (byte) 128 - (byte) init_plot_tables::x ← (byte) 0 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 + (byte) init_plot_tables::x ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word) 248 *((byte[]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP *((byte[]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits ← (byte) 128 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs ← (byte) 0 - (byte) init_plot_tables::y ← (byte) 0 + (byte*) init_plot_tables::yoffs ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs *((byte[]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word/signed word) 320 (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -667,9 +667,9 @@ init_screen: scope:[init_screen] from (byte*) init_screen::b ← (byte*) BITMAP to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - *((byte*) init_screen::b) ← (byte) 0 + *((byte*) init_screen::b) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b ← ++ (byte*) init_screen::b - (byte*~) init_screen::$0 ← (byte*) BITMAP + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -677,9 +677,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 (byte*) init_screen::c ← (byte*) SCREEN to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 - *((byte*) init_screen::c) ← (byte) 20 + *((byte*) init_screen::c) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c ← ++ (byte*) init_screen::c - (byte*~) init_screen::$2 ← (byte*) SCREEN + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -696,30 +696,30 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from (byte*) D011 ← (word) 53265 - (byte) RST8 ← (byte) 128 - (byte) ECM ← (byte) 64 - (byte) BMM ← (byte) 32 - (byte) DEN ← (byte) 16 - (byte) RSEL ← (byte) 8 + (byte) RST8 ← (byte/word/signed word) 128 + (byte) ECM ← (byte/signed byte/word/signed word) 64 + (byte) BMM ← (byte/signed byte/word/signed word) 32 + (byte) DEN ← (byte/signed byte/word/signed word) 16 + (byte) RSEL ← (byte/signed byte/word/signed word) 8 (byte*) RASTER ← (word) 53266 (byte*) D016 ← (word) 53270 - (byte) MCM ← (byte) 16 - (byte) CSEL ← (byte) 8 + (byte) MCM ← (byte/signed byte/word/signed word) 16 + (byte) CSEL ← (byte/signed byte/word/signed word) 8 (byte*) D018 ← (word) 53272 (byte*) BGCOL ← (word) 53280 (byte*) FGCOL ← (word) 53281 (byte*) COLS ← (word) 55296 - (byte*) SCREEN ← (word) 1024 - (byte*) BITMAP ← (word) 8192 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) BITMAP ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 - *((byte*) BGCOL) ← (byte) 0 - *((byte*) FGCOL) ← (byte) 0 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM | (byte) DEN (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011) ← (byte~) main::$2 - *((byte*) D018) ← (byte) 24 + *((byte*) D018) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -730,7 +730,7 @@ main::@6: scope:[main] from main::@5 main::@1: scope:[main] from main::@7 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@6 - (boolean~) main::$5 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -745,12 +745,12 @@ main::@return: scope:[main] from main::@7 return to:@return @1: scope:[] from @begin - (byte[]) plots_x ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt ← (byte) 8 + (byte[]) plots_x ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 - (byte) plots::i ← (byte) 0 + (byte) plots::i ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte~) plots::$0 ← (byte[]) plots_x *idx (byte) plots::i @@ -768,25 +768,25 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (byte[]) plot_xlo ← (word) 4096 - (byte[]) plot_xhi ← (word) 4352 - (byte[]) plot_ylo ← (word) 4608 - (byte[]) plot_yhi ← (word) 4864 - (byte[]) plot_bit ← (word) 5120 + (byte[]) plot_xlo ← (word/signed word) 4096 + (byte[]) plot_xhi ← (word/signed word) 4352 + (byte[]) plot_ylo ← (word/signed word) 4608 + (byte[]) plot_yhi ← (word/signed word) 4864 + (byte[]) plot_bit ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x ← (byte) 0 - (byte*) plot::plotter_y ← (byte) 0 + (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y hi= (byte~) plot::$2 + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (byte*) plot::plotter_y ← (byte*) plot::plotter_y lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x + (byte*) plot::plotter_y - (byte*) plot::plotter ← (byte~) plot::$4 + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 *((byte*) plot::plotter) ← (byte~) plot::$6 @@ -795,52 +795,52 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - (byte) init_plot_tables::bits ← (byte) 128 - (byte) init_plot_tables::x ← (byte) 0 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 + (byte) init_plot_tables::x ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word) 248 *((byte[]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP *((byte[]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits ← (byte) 128 + (byte) init_plot_tables::bits ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs ← (byte) 0 - (byte) init_plot_tables::y ← (byte) 0 + (byte*) init_plot_tables::yoffs ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs *((byte[]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs + (word/signed word) 320 (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -850,9 +850,9 @@ init_screen: scope:[init_screen] from main (byte*) init_screen::b ← (byte*) BITMAP to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - *((byte*) init_screen::b) ← (byte) 0 + *((byte*) init_screen::b) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b ← ++ (byte*) init_screen::b - (byte*~) init_screen::$0 ← (byte*) BITMAP + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -860,9 +860,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 (byte*) init_screen::c ← (byte*) SCREEN to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 - *((byte*) init_screen::c) ← (byte) 20 + *((byte*) init_screen::c) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c ← ++ (byte*) init_screen::c - (byte*~) init_screen::$2 ← (byte*) SCREEN + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -889,21 +889,21 @@ Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) RASTER#0 ← (word) 53266 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D018#0 ← (word) 53272 (byte*) BGCOL#0 ← (word) 53280 (byte*) FGCOL#0 ← (word) 53281 (byte*) COLS#0 ← (word) 55296 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 (byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 ) @@ -924,13 +924,13 @@ main: scope:[main] from @5 (byte) BMM#1 ← phi( @5/(byte) BMM#2 ) (byte*) FGCOL#1 ← phi( @5/(byte*) FGCOL#2 ) (byte*) BGCOL#1 ← phi( @5/(byte*) BGCOL#4 ) - *((byte*) BGCOL#1) ← (byte) 0 - *((byte*) FGCOL#1) ← (byte) 0 + *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#1) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#1) ← (byte~) main::$2 - *((byte*) D018#1) ← (byte) 24 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -982,7 +982,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6 (byte[]) plots_x#5 ← phi( main::@1/(byte[]) plots_x#6 main::@2/(byte[]) plots_x#5 main::@6/(byte[]) plots_x#7 ) (byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 ) - (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -1027,9 +1027,9 @@ main::@return: scope:[main] from main::@7 (byte) BMM#4 ← phi( @begin/(byte) BMM#0 ) (byte*) FGCOL#4 ← phi( @begin/(byte*) FGCOL#0 ) (byte*) BGCOL#10 ← phi( @begin/(byte*) BGCOL#0 ) - (byte[]) plots_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt#0 ← (byte) 8 + (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 (byte[]) plot_bit#6 ← phi( main::@3/(byte[]) plot_bit#11 ) @@ -1040,7 +1040,7 @@ plots: scope:[plots] from main::@3 (byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 ) (byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 ) (byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 ) - (byte) plots::i#0 ← (byte) 0 + (byte) plots::i#0 ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte[]) plot_bit#3 ← phi( plots/(byte[]) plot_bit#6 plots::@3/(byte[]) plot_bit#7 ) @@ -1089,11 +1089,11 @@ plots::@return: scope:[plots] from plots::@3 (byte) BMM#3 ← phi( @1/(byte) BMM#4 ) (byte*) FGCOL#3 ← phi( @1/(byte*) FGCOL#4 ) (byte*) BGCOL#8 ← phi( @1/(byte*) BGCOL#10 ) - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 (byte[]) plot_bit#1 ← phi( plots::@1/(byte[]) plot_bit#3 ) @@ -1103,18 +1103,18 @@ plot: scope:[plot] from plots::@1 (byte[]) plot_xlo#1 ← phi( plots::@1/(byte[]) plot_xlo#3 ) (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte[]) plot_xhi#1 ← phi( plots::@1/(byte[]) plot_xhi#3 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#1 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#1 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#1 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#1 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 - (byte*) plot::plotter#0 ← (byte~) plot::$4 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + (byte*) plot::plotter#0 ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#1 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -1129,8 +1129,8 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 (byte[]) plot_xhi#4 ← phi( main::@5/(byte[]) plot_xhi#8 ) (byte*) BITMAP#4 ← phi( main::@5/(byte*) BITMAP#8 ) (byte[]) plot_xlo#4 ← phi( main::@5/(byte[]) plot_xlo#8 ) - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#11 ← phi( init_plot_tables/(byte[]) plot_yhi#14 init_plot_tables::@2/(byte[]) plot_yhi#8 ) @@ -1141,14 +1141,14 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#4 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#4 init_plot_tables::@2/(byte[]) plot_xlo#5 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits#1 ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 @@ -1162,7 +1162,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#5 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 init_plot_tables::@5/(byte[]) plot_xlo#9 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#4 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 @@ -1173,27 +1173,27 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (byte*) BITMAP#9 ← phi( init_plot_tables::@1/(byte*) BITMAP#1 ) (byte[]) plot_xlo#9 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 ) - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 (byte[]) plot_yhi#5 ← phi( init_plot_tables::@2/(byte[]) plot_yhi#8 ) (byte[]) plot_ylo#5 ← phi( init_plot_tables::@2/(byte[]) plot_ylo#8 ) - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#4 init_plot_tables::@6/(byte[]) plot_yhi#5 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#4 init_plot_tables::@6/(byte[]) plot_ylo#5 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 @@ -1203,7 +1203,7 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#4 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 @@ -1211,7 +1211,7 @@ init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 (byte[]) plot_ylo#9 ← phi( init_plot_tables::@3/(byte[]) plot_ylo#2 ) (byte) init_plot_tables::y#4 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 ) (byte*) init_plot_tables::yoffs#3 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 ) - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word/signed word) 320 (byte*) init_plot_tables::yoffs#1 ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -1226,9 +1226,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#3 ← phi( init_screen/(byte*) SCREEN#4 init_screen::@1/(byte*) SCREEN#3 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#2 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -1239,9 +1239,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -1276,21 +1276,21 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) RASTER#0 ← (word) 53266 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D018#0 ← (word) 53272 (byte*) BGCOL#0 ← (word) 53280 (byte*) FGCOL#0 ← (word) 53281 (byte*) COLS#0 ← (word) 55296 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 (byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 ) @@ -1311,13 +1311,13 @@ main: scope:[main] from @5 (byte) BMM#1 ← phi( @5/(byte) BMM#2 ) (byte*) FGCOL#1 ← phi( @5/(byte*) FGCOL#2 ) (byte*) BGCOL#1 ← phi( @5/(byte*) BGCOL#4 ) - *((byte*) BGCOL#1) ← (byte) 0 - *((byte*) FGCOL#1) ← (byte) 0 + *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#1) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#1) ← (byte~) main::$2 - *((byte*) D018#1) ← (byte) 24 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -1369,7 +1369,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6 (byte[]) plots_x#5 ← phi( main::@1/(byte[]) plots_x#6 main::@2/(byte[]) plots_x#5 main::@6/(byte[]) plots_x#7 ) (byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 ) - (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -1414,9 +1414,9 @@ main::@return: scope:[main] from main::@7 (byte) BMM#4 ← phi( @begin/(byte) BMM#0 ) (byte*) FGCOL#4 ← phi( @begin/(byte*) FGCOL#0 ) (byte*) BGCOL#10 ← phi( @begin/(byte*) BGCOL#0 ) - (byte[]) plots_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt#0 ← (byte) 8 + (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 (byte[]) plot_bit#6 ← phi( main::@3/(byte[]) plot_bit#11 ) @@ -1427,7 +1427,7 @@ plots: scope:[plots] from main::@3 (byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 ) (byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 ) (byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 ) - (byte) plots::i#0 ← (byte) 0 + (byte) plots::i#0 ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte[]) plot_bit#3 ← phi( plots/(byte[]) plot_bit#6 plots::@3/(byte[]) plot_bit#7 ) @@ -1476,11 +1476,11 @@ plots::@return: scope:[plots] from plots::@3 (byte) BMM#3 ← phi( @1/(byte) BMM#4 ) (byte*) FGCOL#3 ← phi( @1/(byte*) FGCOL#4 ) (byte*) BGCOL#8 ← phi( @1/(byte*) BGCOL#10 ) - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 (byte[]) plot_bit#1 ← phi( plots::@1/(byte[]) plot_bit#3 ) @@ -1490,18 +1490,18 @@ plot: scope:[plot] from plots::@1 (byte[]) plot_xlo#1 ← phi( plots::@1/(byte[]) plot_xlo#3 ) (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte[]) plot_xhi#1 ← phi( plots::@1/(byte[]) plot_xhi#3 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#1 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#1 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#1 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#1 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 - (byte*) plot::plotter#0 ← (byte~) plot::$4 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + (byte*) plot::plotter#0 ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#1 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -1516,8 +1516,8 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 (byte[]) plot_xhi#4 ← phi( main::@5/(byte[]) plot_xhi#8 ) (byte*) BITMAP#4 ← phi( main::@5/(byte*) BITMAP#8 ) (byte[]) plot_xlo#4 ← phi( main::@5/(byte[]) plot_xlo#8 ) - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#11 ← phi( init_plot_tables/(byte[]) plot_yhi#14 init_plot_tables::@2/(byte[]) plot_yhi#8 ) @@ -1528,14 +1528,14 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#4 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#4 init_plot_tables::@2/(byte[]) plot_xlo#5 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits#1 ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 @@ -1549,7 +1549,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#5 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 init_plot_tables::@5/(byte[]) plot_xlo#9 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#4 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 @@ -1560,27 +1560,27 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (byte*) BITMAP#9 ← phi( init_plot_tables::@1/(byte*) BITMAP#1 ) (byte[]) plot_xlo#9 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 ) - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 (byte[]) plot_yhi#5 ← phi( init_plot_tables::@2/(byte[]) plot_yhi#8 ) (byte[]) plot_ylo#5 ← phi( init_plot_tables::@2/(byte[]) plot_ylo#8 ) - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#4 init_plot_tables::@6/(byte[]) plot_yhi#5 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#4 init_plot_tables::@6/(byte[]) plot_ylo#5 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 @@ -1590,7 +1590,7 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#4 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 @@ -1598,7 +1598,7 @@ init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 (byte[]) plot_ylo#9 ← phi( init_plot_tables::@3/(byte[]) plot_ylo#2 ) (byte) init_plot_tables::y#4 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 ) (byte*) init_plot_tables::yoffs#3 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 ) - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word/signed word) 320 (byte*) init_plot_tables::yoffs#1 ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -1613,9 +1613,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#3 ← phi( init_screen/(byte*) SCREEN#4 init_screen::@1/(byte*) SCREEN#3 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#2 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -1626,9 +1626,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -1844,7 +1844,7 @@ INITIAL SSA SYMBOL TABLE (byte~) plot::$1 (byte~) plot::$2 (byte~) plot::$3 -(byte~) plot::$4 +(byte*~) plot::$4 (byte~) plot::$5 (byte~) plot::$6 (label) plot::@return @@ -1854,10 +1854,10 @@ INITIAL SSA SYMBOL TABLE (byte*) plot::plotter_x#0 (byte*) plot::plotter_x#1 (byte*) plot::plotter_x#2 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#0 -(byte*) plot::plotter_y#1 -(byte*) plot::plotter_y#2 +(word) plot::plotter_y +(word) plot::plotter_y#0 +(word) plot::plotter_y#1 +(word) plot::plotter_y#2 (byte) plot::x (byte) plot::x#0 (byte) plot::x#1 @@ -2022,21 +2022,21 @@ Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) RASTER#0 ← (word) 53266 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D018#0 ← (word) 53272 (byte*) BGCOL#0 ← (word) 53280 (byte*) FGCOL#0 ← (word) 53281 (byte*) COLS#0 ← (word) 55296 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 (byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 ) @@ -2057,13 +2057,13 @@ main: scope:[main] from @5 (byte) BMM#1 ← phi( @5/(byte) BMM#2 ) (byte*) FGCOL#1 ← phi( @5/(byte*) FGCOL#2 ) (byte*) BGCOL#1 ← phi( @5/(byte*) BGCOL#4 ) - *((byte*) BGCOL#1) ← (byte) 0 - *((byte*) FGCOL#1) ← (byte) 0 + *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#1) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#1) ← (byte~) main::$2 - *((byte*) D018#1) ← (byte) 24 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -2115,7 +2115,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6 (byte[]) plots_x#5 ← phi( main::@1/(byte[]) plots_x#6 main::@2/(byte[]) plots_x#5 main::@6/(byte[]) plots_x#7 ) (byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 ) - (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -2160,9 +2160,9 @@ main::@return: scope:[main] from main::@7 (byte) BMM#4 ← phi( @begin/(byte) BMM#0 ) (byte*) FGCOL#4 ← phi( @begin/(byte*) FGCOL#0 ) (byte*) BGCOL#10 ← phi( @begin/(byte*) BGCOL#0 ) - (byte[]) plots_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt#0 ← (byte) 8 + (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 (byte[]) plot_bit#6 ← phi( main::@3/(byte[]) plot_bit#11 ) @@ -2173,7 +2173,7 @@ plots: scope:[plots] from main::@3 (byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 ) (byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 ) (byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 ) - (byte) plots::i#0 ← (byte) 0 + (byte) plots::i#0 ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte[]) plot_bit#3 ← phi( plots/(byte[]) plot_bit#6 plots::@3/(byte[]) plot_bit#7 ) @@ -2222,11 +2222,11 @@ plots::@return: scope:[plots] from plots::@3 (byte) BMM#3 ← phi( @1/(byte) BMM#4 ) (byte*) FGCOL#3 ← phi( @1/(byte*) FGCOL#4 ) (byte*) BGCOL#8 ← phi( @1/(byte*) BGCOL#10 ) - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 (byte[]) plot_bit#1 ← phi( plots::@1/(byte[]) plot_bit#3 ) @@ -2236,18 +2236,18 @@ plot: scope:[plot] from plots::@1 (byte[]) plot_xlo#1 ← phi( plots::@1/(byte[]) plot_xlo#3 ) (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte[]) plot_xhi#1 ← phi( plots::@1/(byte[]) plot_xhi#3 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#1 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#1 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#1 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#1 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 - (byte*) plot::plotter#0 ← (byte~) plot::$4 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + (byte*) plot::plotter#0 ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#1 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -2262,8 +2262,8 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 (byte[]) plot_xhi#4 ← phi( main::@5/(byte[]) plot_xhi#8 ) (byte*) BITMAP#4 ← phi( main::@5/(byte*) BITMAP#8 ) (byte[]) plot_xlo#4 ← phi( main::@5/(byte[]) plot_xlo#8 ) - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#11 ← phi( init_plot_tables/(byte[]) plot_yhi#14 init_plot_tables::@2/(byte[]) plot_yhi#8 ) @@ -2274,14 +2274,14 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#4 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#4 init_plot_tables::@2/(byte[]) plot_xlo#5 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits#1 ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte) 0 + (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word) 0 (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 @@ -2295,7 +2295,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#5 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 init_plot_tables::@5/(byte[]) plot_xlo#9 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#4 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 @@ -2306,27 +2306,27 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (byte*) BITMAP#9 ← phi( init_plot_tables::@1/(byte*) BITMAP#1 ) (byte[]) plot_xlo#9 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 ) - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 (byte[]) plot_yhi#5 ← phi( init_plot_tables::@2/(byte[]) plot_yhi#8 ) (byte[]) plot_ylo#5 ← phi( init_plot_tables::@2/(byte[]) plot_ylo#8 ) - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#4 init_plot_tables::@6/(byte[]) plot_yhi#5 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#4 init_plot_tables::@6/(byte[]) plot_ylo#5 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 @@ -2336,7 +2336,7 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#4 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 @@ -2344,7 +2344,7 @@ init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 (byte[]) plot_ylo#9 ← phi( init_plot_tables::@3/(byte[]) plot_ylo#2 ) (byte) init_plot_tables::y#4 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 ) (byte*) init_plot_tables::yoffs#3 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 ) - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word/signed word) 320 (byte*) init_plot_tables::yoffs#1 ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -2359,9 +2359,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#3 ← phi( init_screen/(byte*) SCREEN#4 init_screen::@1/(byte*) SCREEN#3 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#2 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -2372,9 +2372,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -2404,27 +2404,27 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 to:@end @end: scope:[] from @5 -Inversing boolean not (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 from (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte) 0 -Inversing boolean not (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 from (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte) 7 +Inversing boolean not (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 from (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 from (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word) 7 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) RASTER#0 ← (word) 53266 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D018#0 ← (word) 53272 (byte*) BGCOL#0 ← (word) 53280 (byte*) FGCOL#0 ← (word) 53281 (byte*) COLS#0 ← (word) 55296 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 (byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 ) @@ -2445,13 +2445,13 @@ main: scope:[main] from @5 (byte) BMM#1 ← phi( @5/(byte) BMM#2 ) (byte*) FGCOL#1 ← phi( @5/(byte*) FGCOL#2 ) (byte*) BGCOL#1 ← phi( @5/(byte*) BGCOL#4 ) - *((byte*) BGCOL#1) ← (byte) 0 - *((byte*) FGCOL#1) ← (byte) 0 + *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#1) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#1) ← (byte~) main::$2 - *((byte*) D018#1) ← (byte) 24 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -2503,7 +2503,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6 (byte[]) plots_x#5 ← phi( main::@1/(byte[]) plots_x#6 main::@2/(byte[]) plots_x#5 main::@6/(byte[]) plots_x#7 ) (byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 ) - (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -2548,9 +2548,9 @@ main::@return: scope:[main] from main::@7 (byte) BMM#4 ← phi( @begin/(byte) BMM#0 ) (byte*) FGCOL#4 ← phi( @begin/(byte*) FGCOL#0 ) (byte*) BGCOL#10 ← phi( @begin/(byte*) BGCOL#0 ) - (byte[]) plots_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt#0 ← (byte) 8 + (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 (byte[]) plot_bit#6 ← phi( main::@3/(byte[]) plot_bit#11 ) @@ -2561,7 +2561,7 @@ plots: scope:[plots] from main::@3 (byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 ) (byte[]) plots_y#2 ← phi( main::@3/(byte[]) plots_y#4 ) (byte[]) plots_x#2 ← phi( main::@3/(byte[]) plots_x#4 ) - (byte) plots::i#0 ← (byte) 0 + (byte) plots::i#0 ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte[]) plot_bit#3 ← phi( plots/(byte[]) plot_bit#6 plots::@3/(byte[]) plot_bit#7 ) @@ -2610,11 +2610,11 @@ plots::@return: scope:[plots] from plots::@3 (byte) BMM#3 ← phi( @1/(byte) BMM#4 ) (byte*) FGCOL#3 ← phi( @1/(byte*) FGCOL#4 ) (byte*) BGCOL#8 ← phi( @1/(byte*) BGCOL#10 ) - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 (byte[]) plot_bit#1 ← phi( plots::@1/(byte[]) plot_bit#3 ) @@ -2624,18 +2624,18 @@ plot: scope:[plot] from plots::@1 (byte[]) plot_xlo#1 ← phi( plots::@1/(byte[]) plot_xlo#3 ) (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte[]) plot_xhi#1 ← phi( plots::@1/(byte[]) plot_xhi#3 ) - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#1 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#1 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#1 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#1 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte~) plot::$4 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 - (byte*) plot::plotter#0 ← (byte~) plot::$4 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + (byte*) plot::plotter#0 ← (byte*~) plot::$4 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#1 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -2650,8 +2650,8 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 (byte[]) plot_xhi#4 ← phi( main::@5/(byte[]) plot_xhi#8 ) (byte*) BITMAP#4 ← phi( main::@5/(byte*) BITMAP#8 ) (byte[]) plot_xlo#4 ← phi( main::@5/(byte[]) plot_xlo#8 ) - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#11 ← phi( init_plot_tables/(byte[]) plot_yhi#14 init_plot_tables::@2/(byte[]) plot_yhi#8 ) @@ -2662,14 +2662,14 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#4 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#4 init_plot_tables::@2/(byte[]) plot_xlo#5 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte) 1 + (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 (byte) init_plot_tables::bits#1 ← (byte~) init_plot_tables::$2 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 @@ -2682,7 +2682,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#5 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 init_plot_tables::@5/(byte[]) plot_xlo#9 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#4 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 @@ -2693,27 +2693,27 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (byte*) BITMAP#9 ← phi( init_plot_tables::@1/(byte*) BITMAP#1 ) (byte[]) plot_xlo#9 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 ) - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 (byte[]) plot_yhi#5 ← phi( init_plot_tables::@2/(byte[]) plot_yhi#8 ) (byte[]) plot_ylo#5 ← phi( init_plot_tables::@2/(byte[]) plot_ylo#8 ) - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#4 init_plot_tables::@6/(byte[]) plot_yhi#5 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#4 init_plot_tables::@6/(byte[]) plot_ylo#5 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 @@ -2722,7 +2722,7 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#4 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 @@ -2730,7 +2730,7 @@ init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 (byte[]) plot_ylo#9 ← phi( init_plot_tables::@3/(byte[]) plot_ylo#2 ) (byte) init_plot_tables::y#4 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 ) (byte*) init_plot_tables::yoffs#3 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 ) - (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word) 320 + (byte*~) init_plot_tables::$13 ← (byte*) init_plot_tables::yoffs#3 + (word/signed word) 320 (byte*) init_plot_tables::yoffs#1 ← (byte*~) init_plot_tables::$13 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 @@ -2745,9 +2745,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#3 ← phi( init_screen/(byte*) SCREEN#4 init_screen::@1/(byte*) SCREEN#3 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#2 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -2758,9 +2758,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -2834,7 +2834,7 @@ Alias (byte[]) plot_ylo#1 = (byte[]) plot_ylo#7 (byte[]) plot_ylo#3 Alias (byte[]) plot_bit#1 = (byte[]) plot_bit#7 (byte[]) plot_bit#3 Alias (byte) plot::x#0 = (byte) plot::x#1 Alias (byte) plot::y#0 = (byte) plot::y#1 -Alias (byte*) plot::plotter#0 = (byte~) plot::$4 +Alias (byte*) plot::plotter#0 = (byte*~) plot::$4 Alias (byte) init_plot_tables::bits#1 = (byte~) init_plot_tables::$2 Alias (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#4 Alias (byte[]) plot_xlo#2 = (byte[]) plot_xlo#9 @@ -2855,30 +2855,30 @@ Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) RASTER#0 ← (word) 53266 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D018#0 ← (word) 53272 (byte*) BGCOL#0 ← (word) 53280 (byte*) FGCOL#0 ← (word) 53281 (byte*) COLS#0 ← (word) 55296 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -2899,7 +2899,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6 (byte[]) plots_x#2 ← phi( main::@1/(byte[]) plots_x#2 main::@2/(byte[]) plots_x#2 main::@6/(byte[]) plots_x#0 ) (byte*) BGCOL#2 ← phi( main::@1/(byte*) BGCOL#2 main::@2/(byte*) BGCOL#2 main::@6/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#0 ) - (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -2914,12 +2914,12 @@ main::@return: scope:[main] from main::@7 return to:@return @1: scope:[] from @begin - (byte[]) plots_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt#0 ← (byte) 8 + (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 - (byte) plots::i#0 ← (byte) 0 + (byte) plots::i#0 ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte[]) plot_bit#1 ← phi( plots/(byte[]) plot_bit#11 plots::@3/(byte[]) plot_bit#1 ) @@ -2946,24 +2946,24 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#0 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -2972,8 +2972,8 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#11 ← phi( init_plot_tables/(byte[]) plot_yhi#0 init_plot_tables::@2/(byte[]) plot_yhi#5 ) @@ -2984,13 +2984,13 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#0 init_plot_tables::@2/(byte*) BITMAP#5 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#0 init_plot_tables::@2/(byte[]) plot_xlo#5 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 @@ -3003,29 +3003,29 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p (byte[]) plot_xlo#5 ← phi( init_plot_tables::@1/(byte[]) plot_xlo#2 init_plot_tables::@5/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#4 init_plot_tables::@6/(byte[]) plot_yhi#5 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#4 init_plot_tables::@6/(byte[]) plot_ylo#5 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 @@ -3034,11 +3034,11 @@ init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_p (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 ) (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#2 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -3050,9 +3050,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#1 ← phi( init_screen/(byte*) SCREEN#0 init_screen::@1/(byte*) SCREEN#1 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#0 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -3062,9 +3062,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -3105,30 +3105,30 @@ Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) RASTER#0 ← (word) 53266 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D018#0 ← (word) 53272 (byte*) BGCOL#0 ← (word) 53280 (byte*) FGCOL#0 ← (word) 53281 (byte*) COLS#0 ← (word) 55296 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -3149,7 +3149,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6 (byte[]) plots_x#2 ← phi( main::@1/(byte[]) plots_x#2 main::@2/(byte[]) plots_x#2 main::@6/(byte[]) plots_x#0 ) (byte*) BGCOL#2 ← phi( main::@1/(byte*) BGCOL#2 main::@2/(byte*) BGCOL#2 main::@6/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#0 ) - (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -3164,12 +3164,12 @@ main::@return: scope:[main] from main::@7 return to:@return @1: scope:[] from @begin - (byte[]) plots_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt#0 ← (byte) 8 + (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 - (byte) plots::i#0 ← (byte) 0 + (byte) plots::i#0 ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte[]) plot_bit#1 ← phi( plots/(byte[]) plot_bit#11 plots::@3/(byte[]) plot_bit#1 ) @@ -3196,24 +3196,24 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#0 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -3222,8 +3222,8 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#11 ← phi( init_plot_tables/(byte[]) plot_yhi#0 init_plot_tables::@2/(byte[]) plot_yhi#11 ) @@ -3234,51 +3234,51 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#0 init_plot_tables::@2/(byte*) BITMAP#1 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#0 init_plot_tables::@2/(byte[]) plot_xlo#2 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@4/(byte[]) plot_yhi#2 init_plot_tables::@6/(byte[]) plot_yhi#11 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@4/(byte[]) plot_ylo#2 init_plot_tables::@6/(byte[]) plot_ylo#11 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -3290,9 +3290,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#1 ← phi( init_screen/(byte*) SCREEN#0 init_screen::@1/(byte*) SCREEN#1 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#0 init_screen::@1/(byte*) BITMAP#3 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -3302,9 +3302,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@2/(byte*) SCREEN#2 init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -3376,30 +3376,30 @@ Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) RASTER#0 ← (word) 53266 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D018#0 ← (word) 53272 (byte*) BGCOL#0 ← (word) 53280 (byte*) FGCOL#0 ← (word) 53281 (byte*) COLS#0 ← (word) 55296 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -3420,7 +3420,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@6 (byte[]) plots_x#2 ← phi( main::@6/(byte[]) plots_x#0 ) (byte*) BGCOL#2 ← phi( main::@6/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@6/(byte*) RASTER#0 ) - (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER#1) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -3435,12 +3435,12 @@ main::@return: scope:[main] from main::@7 return to:@return @1: scope:[] from @begin - (byte[]) plots_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt#0 ← (byte) 8 + (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 - (byte) plots::i#0 ← (byte) 0 + (byte) plots::i#0 ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte[]) plot_bit#1 ← phi( plots/(byte[]) plot_bit#11 ) @@ -3467,24 +3467,24 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#1 *idx (byte) plot::x#0 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#1 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#1 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#1 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#1 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -3493,8 +3493,8 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte[]) plot_yhi#11 ← phi( init_plot_tables/(byte[]) plot_yhi#0 ) @@ -3505,51 +3505,51 @@ init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_ (byte*) BITMAP#1 ← phi( init_plot_tables/(byte*) BITMAP#0 ) (byte[]) plot_xlo#2 ← phi( init_plot_tables/(byte[]) plot_xlo#0 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#1 *((byte[]) plot_xhi#2 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#2 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte[]) plot_yhi#2 ← phi( init_plot_tables::@6/(byte[]) plot_yhi#11 ) (byte[]) plot_ylo#2 ← phi( init_plot_tables::@6/(byte[]) plot_ylo#11 ) (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#2 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -3561,9 +3561,9 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) SCREEN#1 ← phi( init_screen/(byte*) SCREEN#0 ) (byte*) BITMAP#3 ← phi( init_screen/(byte*) BITMAP#0 ) (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#3 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -3573,9 +3573,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) SCREEN#2 ← phi( init_screen::@3/(byte*) SCREEN#1 ) (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#2 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -3620,30 +3620,30 @@ Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) RASTER#0 ← (word) 53266 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D018#0 ← (word) 53272 (byte*) BGCOL#0 ← (word) 53280 (byte*) FGCOL#0 ← (word) 53281 (byte*) COLS#0 ← (word) 55296 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -3654,7 +3654,7 @@ main::@6: scope:[main] from main::@5 main::@1: scope:[main] from main::@7 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@6 - (boolean~) main::$5 ← *((byte*) RASTER#0) != (byte) 255 + (boolean~) main::$5 ← *((byte*) RASTER#0) != (byte/word/signed word) 255 if((boolean~) main::$5) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 @@ -3669,12 +3669,12 @@ main::@return: scope:[main] from main::@7 return to:@return @1: scope:[] from @begin - (byte[]) plots_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt#0 ← (byte) 8 + (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 - (byte) plots::i#0 ← (byte) 0 + (byte) plots::i#0 ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) @@ -3693,24 +3693,24 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -3719,55 +3719,55 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#0 *((byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte) 0 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte) 0 + (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte) 7 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word) 7 if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte) 0 + (boolean~) init_plot_tables::$14 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) init_plot_tables::$14) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -3777,9 +3777,9 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word/signed word) 8192 (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0 if((boolean~) init_screen::$1) goto init_screen::@1 to:init_screen::@3 @@ -3788,9 +3788,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word/signed word) 1024 (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2 if((boolean~) init_screen::$3) goto init_screen::@2 to:init_screen::@return @@ -3802,42 +3802,42 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 to:@end @end: scope:[] from @5 -Simple Condition (boolean~) main::$5 if(*((byte*) RASTER#0)!=(byte) 255) goto main::@2 +Simple Condition (boolean~) main::$5 if(*((byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 Simple Condition (boolean~) plots::$3 if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1 -Simple Condition (boolean~) init_plot_tables::$4 if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 -Simple Condition (boolean~) init_plot_tables::$5 if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 -Simple Condition (boolean~) init_plot_tables::$12 if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 -Simple Condition (boolean~) init_plot_tables::$14 if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 +Simple Condition (boolean~) init_plot_tables::$4 if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 +Simple Condition (boolean~) init_plot_tables::$5 if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 +Simple Condition (boolean~) init_plot_tables::$12 if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 +Simple Condition (boolean~) init_plot_tables::$14 if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 Simple Condition (boolean~) init_screen::$1 if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1 Simple Condition (boolean~) init_screen::$3 if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from (byte*) D011#0 ← (word) 53265 - (byte) RST8#0 ← (byte) 128 - (byte) ECM#0 ← (byte) 64 - (byte) BMM#0 ← (byte) 32 - (byte) DEN#0 ← (byte) 16 - (byte) RSEL#0 ← (byte) 8 + (byte) RST8#0 ← (byte/word/signed word) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word) 64 + (byte) BMM#0 ← (byte/signed byte/word/signed word) 32 + (byte) DEN#0 ← (byte/signed byte/word/signed word) 16 + (byte) RSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) RASTER#0 ← (word) 53266 (byte*) D016#0 ← (word) 53270 - (byte) MCM#0 ← (byte) 16 - (byte) CSEL#0 ← (byte) 8 + (byte) MCM#0 ← (byte/signed byte/word/signed word) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word) 8 (byte*) D018#0 ← (word) 53272 (byte*) BGCOL#0 ← (word) 53280 (byte*) FGCOL#0 ← (word) 53281 (byte*) COLS#0 ← (word) 55296 - (byte*) SCREEN#0 ← (word) 1024 - (byte*) BITMAP#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) BITMAP#0 ← (word/signed word) 8192 to:@1 main: scope:[main] from @5 - *((byte*) BGCOL#0) ← (byte) 0 - *((byte*) FGCOL#0) ← (byte) 0 + *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((byte*) D011#0) ← (byte~) main::$2 - *((byte*) D018#0) ← (byte) 24 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -3848,7 +3848,7 @@ main::@6: scope:[main] from main::@5 main::@1: scope:[main] from main::@7 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@6 - if(*((byte*) RASTER#0)!=(byte) 255) goto main::@2 + if(*((byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 *((byte*) BGCOL#0) ← ++ *((byte*) BGCOL#0) @@ -3862,12 +3862,12 @@ main::@return: scope:[main] from main::@7 return to:@return @1: scope:[] from @begin - (byte[]) plots_x#0 ← { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } - (byte[]) plots_y#0 ← { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } - (byte) plots_cnt#0 ← (byte) 8 + (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } + (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } + (byte) plots_cnt#0 ← (byte/signed byte/word/signed word) 8 to:@2 plots: scope:[plots] from main::@3 - (byte) plots::i#0 ← (byte) 0 + (byte) plots::i#0 ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) @@ -3885,24 +3885,24 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (byte[]) plot_xlo#0 ← (word) 4096 - (byte[]) plot_xhi#0 ← (word) 4352 - (byte[]) plot_ylo#0 ← (word) 4608 - (byte[]) plot_yhi#0 ← (word) 4864 - (byte[]) plot_bit#0 ← (word) 5120 + (byte[]) plot_xlo#0 ← (word/signed word) 4096 + (byte[]) plot_xhi#0 ← (word/signed word) 4352 + (byte[]) plot_ylo#0 ← (word/signed word) 4608 + (byte[]) plot_yhi#0 ← (word/signed word) 4864 + (byte[]) plot_bit#0 ← (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte) 0 - (byte*) plot::plotter_y#0 ← (byte) 0 + (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -3911,51 +3911,51 @@ plot::@return: scope:[plot] from plot return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - (byte) init_plot_tables::bits#0 ← (byte) 128 - (byte) init_plot_tables::x#0 ← (byte) 0 + (byte) init_plot_tables::bits#0 ← (byte/word/signed word) 128 + (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#0 *((byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - (byte) init_plot_tables::bits#2 ← (byte) 128 + (byte) init_plot_tables::bits#2 ← (byte/word/signed word) 128 to:init_plot_tables::@2 init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#0 ← (byte) 0 - (byte) init_plot_tables::y#0 ← (byte) 0 + (byte*) init_plot_tables::yoffs#0 ← (byte/signed byte/word/signed word) 0 + (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word) 0 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -3965,9 +3965,9 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word) 8192 + (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word/signed word) 8192 if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1 to:init_screen::@3 init_screen::@3: scope:[init_screen] from init_screen::@1 @@ -3975,9 +3975,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word) 1024 + (byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word/signed word) 1024 if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 @@ -4014,7 +4014,7 @@ Constant (const byte[]) plot_ylo#0 = 4608 Constant (const byte[]) plot_yhi#0 = 4864 Constant (const byte[]) plot_bit#0 = 5120 Constant (const byte*) plot::plotter_x#0 = 0 -Constant (const byte*) plot::plotter_y#0 = 0 +Constant (const word) plot::plotter_y#0 = 0 Constant (const byte) init_plot_tables::bits#0 = 128 Constant (const byte) init_plot_tables::x#0 = 0 Constant (const byte) init_plot_tables::bits#2 = 128 @@ -4025,13 +4025,13 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @5 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$0 ← (const byte) BMM#0 | (const byte) DEN#0 (byte~) main::$1 ← (byte~) main::$0 | (const byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((const byte*) D011#0) ← (byte~) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -4042,7 +4042,7 @@ main::@6: scope:[main] from main::@5 main::@1: scope:[main] from main::@7 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@6 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -4082,10 +4082,10 @@ plot: scope:[plot] from plots::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -4098,18 +4098,18 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$1 ← > (const byte*) BITMAP#0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 @@ -4118,22 +4118,22 @@ init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -4143,9 +4143,9 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - (byte*~) init_screen::$0 ← (const byte*) BITMAP#0 + (word) 8192 + (byte*~) init_screen::$0 ← (const byte*) BITMAP#0 + (word/signed word) 8192 if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1 to:init_screen::@3 init_screen::@3: scope:[init_screen] from init_screen::@1 @@ -4153,9 +4153,9 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - (byte*~) init_screen::$2 ← (const byte*) SCREEN#0 + (word) 1024 + (byte*~) init_screen::$2 ← (const byte*) SCREEN#0 + (word/signed word) 1024 if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 @@ -4177,12 +4177,12 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @5 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 (byte~) main::$1 ← (const byte) main::$0 | (const byte) RSEL#0 - (byte~) main::$2 ← (byte~) main::$1 | (byte) 3 + (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word) 3 *((const byte*) D011#0) ← (byte~) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -4193,7 +4193,7 @@ main::@6: scope:[main] from main::@5 main::@1: scope:[main] from main::@7 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@6 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -4233,10 +4233,10 @@ plot: scope:[plot] from plots::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -4249,17 +4249,17 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 @@ -4268,22 +4268,22 @@ init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -4292,7 +4292,7 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@3 @@ -4300,7 +4300,7 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -4318,11 +4318,11 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @5 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 - (byte~) main::$2 ← (const byte) main::$1 | (byte) 3 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 + (byte~) main::$2 ← (const byte) main::$1 | (byte/signed byte/word/signed word) 3 *((const byte*) D011#0) ← (byte~) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -4333,7 +4333,7 @@ main::@6: scope:[main] from main::@5 main::@1: scope:[main] from main::@7 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@6 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -4373,10 +4373,10 @@ plot: scope:[plot] from plots::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -4389,17 +4389,17 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 @@ -4408,22 +4408,22 @@ init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -4432,7 +4432,7 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@3 @@ -4440,7 +4440,7 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -4458,10 +4458,10 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @5 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 *((const byte*) D011#0) ← (const byte) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main @@ -4472,7 +4472,7 @@ main::@6: scope:[main] from main::@5 main::@1: scope:[main] from main::@7 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@6 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -4512,10 +4512,10 @@ plot: scope:[plot] from plots::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -4528,17 +4528,17 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@6 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 @@ -4547,22 +4547,22 @@ init_plot_tables::@6: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@4 init_plot_tables::@6 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -4571,7 +4571,7 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@3 @@ -4579,7 +4579,7 @@ init_screen::@3: scope:[init_screen] from init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -4616,17 +4616,17 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@5 main: scope:[main] from @5 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 *((const byte*) D011#0) ← (const byte) main::$2 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main call init_plot_tables param-assignment to:main::@2 main::@2: scope:[main] from main::@2 main::@5 main::@7 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -4662,10 +4662,10 @@ plot: scope:[plot] from plots::@1 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (const byte*) plot::plotter_y#0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -4678,39 +4678,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(const byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(const byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (const byte) init_plot_tables::$1 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(const byte) init_plot_tables::bits#2 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@3 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(const byte*) init_plot_tables::yoffs#0 ) (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(const byte) init_plot_tables::y#0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -4719,13 +4719,13 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 if((byte*) init_screen::b#1!=(const byte*) init_screen::$0) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) init_screen::c#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 if((byte*) init_screen::c#1!=(const byte*) init_screen::$2) goto init_screen::@2 to:init_screen::@return @@ -4773,8 +4773,8 @@ Inlining constant with var siblings (const byte) plots::i#0 Inlining constant with var siblings (const byte) plots::i#0 Inlining constant with var siblings (const byte*) plot::plotter_x#0 Inlining constant with var siblings (const byte*) plot::plotter_x#0 -Inlining constant with var siblings (const byte*) plot::plotter_y#0 -Inlining constant with var siblings (const byte*) plot::plotter_y#0 +Inlining constant with var siblings (const word) plot::plotter_y#0 +Inlining constant with var siblings (const word) plot::plotter_y#0 Inlining constant with var siblings (const byte) init_plot_tables::bits#0 Inlining constant with var siblings (const byte) init_plot_tables::bits#0 Inlining constant with var siblings (const byte) init_plot_tables::bits#0 @@ -4792,38 +4792,38 @@ Inlining constant with var siblings (const byte*) init_screen::b#0 Inlining constant with var siblings (const byte*) init_screen::b#0 Inlining constant with var siblings (const byte*) init_screen::c#0 Inlining constant with var siblings (const byte*) init_screen::c#0 -Constant inlined init_plot_tables::y#0 = (byte) 0 -Constant inlined init_plot_tables::x#0 = (byte) 0 -Constant inlined init_plot_tables::yoffs#0 = (byte) 0 -Constant inlined plots::i#0 = (byte) 0 +Constant inlined plots::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined init_plot_tables::bits#2 = (byte/word/signed word) 128 +Constant inlined init_plot_tables::bits#0 = (byte/word/signed word) 128 +Constant inlined plot::plotter_y#0 = (byte/signed byte/word/signed word) 0 +Constant inlined plot::plotter_x#0 = (byte/signed byte/word/signed word) 0 +Constant inlined init_screen::$2 = (const byte*) SCREEN#0+(word/signed word) 1024 Constant inlined main::$1 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0 Constant inlined init_plot_tables::$1 = >(const byte*) BITMAP#0 -Constant inlined main::$2 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 +Constant inlined main::$2 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 Constant inlined main::$0 = (const byte) BMM#0|(const byte) DEN#0 -Constant inlined plot::plotter_y#0 = (byte) 0 -Constant inlined init_screen::$2 = (const byte*) SCREEN#0+(word) 1024 +Constant inlined init_plot_tables::y#0 = (byte/signed byte/word/signed word) 0 +Constant inlined init_plot_tables::yoffs#0 = (byte/signed byte/word/signed word) 0 +Constant inlined init_plot_tables::x#0 = (byte/signed byte/word/signed word) 0 Constant inlined init_screen::c#0 = (const byte*) SCREEN#0 -Constant inlined init_plot_tables::bits#0 = (byte) 128 -Constant inlined init_plot_tables::bits#2 = (byte) 128 -Constant inlined plot::plotter_x#0 = (byte) 0 -Constant inlined init_screen::$0 = (const byte*) BITMAP#0+(word) 8192 Constant inlined init_screen::b#0 = (const byte*) BITMAP#0 +Constant inlined init_screen::$0 = (const byte*) BITMAP#0+(word/signed word) 8192 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from to:@5 main: scope:[main] from @5 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 - *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main call init_plot_tables param-assignment to:main::@2 main::@2: scope:[main] from main::@2 main::@5 main::@7 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -4839,7 +4839,7 @@ main::@return: scope:[main] from main::@7 plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 - (byte) plots::i#2 ← phi( plots/(byte) 0 plots::@3/(byte) plots::i#1 ) + (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@3/(byte) plots::i#1 ) (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 (byte) plot::x#0 ← (byte~) plots::$0 @@ -4855,14 +4855,14 @@ plots::@return: scope:[plots] from plots::@3 to:@return plot: scope:[plot] from plots::@1 (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 + (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -4873,41 +4873,41 @@ plot::@return: scope:[plot] from plot init_plot_tables: scope:[init_plot_tables] from main::@5 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) - (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (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 ) + (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 ) + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@2 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 to:init_plot_tables::@5 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@5 - (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) 128 ) + (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte/word/signed word) 128 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 to:init_plot_tables::@3 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) - (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) + (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 ) + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 (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 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 to:init_plot_tables::@4 init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -4916,15 +4916,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 + if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 + if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 return @@ -4941,13 +4941,13 @@ FINAL SYMBOL TABLE (byte*) BGCOL (const byte*) BGCOL#0 = (word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 = (word) 8192 +(const byte*) BITMAP#0 = (word/signed word) 8192 (byte) BMM -(const byte) BMM#0 = (byte) 32 +(const byte) BMM#0 = (byte/signed byte/word/signed word) 32 (byte*) COLS (const byte*) COLS#0 = (word) 55296 (byte) CSEL -(const byte) CSEL#0 = (byte) 8 +(const byte) CSEL#0 = (byte/signed byte/word/signed word) 8 (byte*) D011 (const byte*) D011#0 = (word) 53265 (byte*) D016 @@ -4955,21 +4955,21 @@ FINAL SYMBOL TABLE (byte*) D018 (const byte*) D018#0 = (word) 53272 (byte) DEN -(const byte) DEN#0 = (byte) 16 +(const byte) DEN#0 = (byte/signed byte/word/signed word) 16 (byte) ECM -(const byte) ECM#0 = (byte) 64 +(const byte) ECM#0 = (byte/signed byte/word/signed word) 64 (byte*) FGCOL (const byte*) FGCOL#0 = (word) 53281 (byte) MCM -(const byte) MCM#0 = (byte) 16 +(const byte) MCM#0 = (byte/signed byte/word/signed word) 16 (byte*) RASTER (const byte*) RASTER#0 = (word) 53266 (byte) RSEL -(const byte) RSEL#0 = (byte) 8 +(const byte) RSEL#0 = (byte/signed byte/word/signed word) 8 (byte) RST8 -(const byte) RST8#0 = (byte) 128 +(const byte) RST8#0 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) init_plot_tables() (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$10 @@ -5027,23 +5027,23 @@ FINAL SYMBOL TABLE (byte*) plot::plotter_x (byte*) plot::plotter_x#1 (byte*) plot::plotter_x#2 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#1 -(byte*) plot::plotter_y#2 +(word) plot::plotter_y +(word) plot::plotter_y#1 +(word) plot::plotter_y#2 (byte) plot::x (byte) plot::x#0 (byte) plot::y (byte) plot::y#0 (byte[]) plot_bit -(const byte[]) plot_bit#0 = (word) 5120 +(const byte[]) plot_bit#0 = (word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 = (word) 4352 +(const byte[]) plot_xhi#0 = (word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 = (word) 4096 +(const byte[]) plot_xlo#0 = (word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 = (word) 4864 +(const byte[]) plot_yhi#0 = (word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 = (word) 4608 +(const byte[]) plot_ylo#0 = (word/signed word) 4608 (void()) plots() (byte~) plots::$0 (byte~) plots::$1 @@ -5054,11 +5054,11 @@ FINAL SYMBOL TABLE (byte) plots::i#1 (byte) plots::i#2 (byte) plots_cnt -(const byte) plots_cnt#0 = (byte) 8 +(const byte) plots_cnt#0 = (byte/signed byte/word/signed word) 8 (byte[]) plots_x -(const byte[]) plots_x#0 = { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } +(const byte[]) plots_x#0 = { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } (byte[]) plots_y -(const byte[]) plots_y#0 = { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } +(const byte[]) plots_y#0 = { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } Block Sequence Planned @begin @5 @end main main::@5 main::@2 main::@3 main::@7 main::@return plots plots::@1 plots::@3 plots::@return plot plot::@return init_plot_tables init_plot_tables::@1 init_plot_tables::@5 init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@7 init_plot_tables::@4 init_plot_tables::@return init_screen init_screen::@1 init_screen::@2 init_screen::@return Added new block during phi lifting plots::@4(between plots::@3 and plots::@1) @@ -5077,17 +5077,17 @@ CONTROL FLOW GRAPH - PHI LIFTED to:@end @end: scope:[] from @5 main: scope:[main] from @5 - *((const byte*) BGCOL#0) ← (byte) 0 - *((const byte*) FGCOL#0) ← (byte) 0 - *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 - *((const byte*) D018#0) ← (byte) 24 + *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 + *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 call init_screen param-assignment to:main::@5 main::@5: scope:[main] from main call init_plot_tables param-assignment to:main::@2 main::@2: scope:[main] from main::@2 main::@5 main::@7 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -5103,7 +5103,7 @@ main::@return: scope:[main] from main::@7 plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@4 - (byte) plots::i#2 ← phi( plots/(byte) 0 plots::@4/(byte~) plots::i#4 ) + (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@4/(byte~) plots::i#4 ) (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 (byte) plot::x#0 ← (byte~) plots::$0 @@ -5122,14 +5122,14 @@ plots::@4: scope:[plots] from plots::@3 to:plots::@1 plot: scope:[plot] from plots::@1 (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 + (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 + (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 - (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 *((byte*) plot::plotter#0) ← (byte~) plot::$6 @@ -5140,42 +5140,42 @@ plot::@return: scope:[plot] from plot init_plot_tables: scope:[init_plot_tables] from main::@5 to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@9 - (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) - (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) - (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 + (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) + (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) + (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 - if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 + (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 + if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 to:init_plot_tables::@5 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_plot_tables::@5 - (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte) 128 ) + (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte/word/signed word) 128 ) (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@9 + if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@9 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@11 init_plot_tables::@2 - (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/(byte) 0 ) - (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte) 0 ) - (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 + (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) + (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) + (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 - if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@12 + (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 + if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@12 to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 + (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 (byte*~) init_plot_tables::yoffs#7 ← (byte*) init_plot_tables::yoffs#1 to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@12 init_plot_tables::@7 (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@12/(byte*~) init_plot_tables::yoffs#6 init_plot_tables::@7/(byte*~) init_plot_tables::yoffs#7 ) (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@11 + if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@11 to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 return @@ -5198,15 +5198,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@5 (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@5/(byte*~) init_screen::b#3 ) - *((byte*) init_screen::b#2) ← (byte) 0 + *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@5 + if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@5 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@6 (byte*) init_screen::c#2 ← phi( init_screen::@6/(byte*~) init_screen::c#3 init_screen::@1/(const byte*) SCREEN#0 ) - *((byte*) init_screen::c#2) ← (byte) 20 + *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@6 + if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@6 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 return @@ -5242,17 +5242,17 @@ CONTROL FLOW GRAPH - LIVE RANGES FOUND to:@end @end: scope:[] from @5 main: scope:[main] from @5 - [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] - [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] - [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] - [4] *((const byte*) D018#0) ← (byte) 24 [ ] + [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] + [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] + [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] + [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] [5] call init_screen param-assignment [ ] to:main::@5 main::@5: scope:[main] from main [6] call init_plot_tables param-assignment [ ] to:main::@2 main::@2: scope:[main] from main::@2 main::@5 main::@7 - [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] + [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] to:main::@3 main::@3: scope:[main] from main::@2 [8] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] @@ -5269,7 +5269,7 @@ plots: scope:[plots] from main::@3 [13] phi() [ ] to:plots::@1 plots::@1: scope:[plots] from plots plots::@4 - [14] (byte) plots::i#2 ← phi( plots/(byte) 0 plots::@4/(byte~) plots::i#4 ) [ plots::i#2 ] + [14] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@4/(byte~) plots::i#4 ) [ plots::i#2 ] [15] (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 ] [16] (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 plots::$1 ] [17] (byte) plot::x#0 ← (byte~) plots::$0 [ plots::i#2 plots::$1 plot::x#0 ] @@ -5288,14 +5288,14 @@ plots::@4: scope:[plots] from plots::@3 to:plots::@1 plot: scope:[plot] from plots::@1 [24] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] - [25] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] + [25] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] [26] (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 ] [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] [28] (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 ] - [29] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] + [29] (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 ] [30] (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 ] - [31] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] - [32] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] + [31] (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 ] + [32] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] [33] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] [34] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] [35] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] @@ -5307,42 +5307,42 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 [37] phi() [ ] to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@9 - [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] + [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [39] (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 ] [40] *((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 ] [41] *((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 ] [42] *((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 ] - [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] - [44] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [43] (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 ] + [44] 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 ] to:init_plot_tables::@5 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_plot_tables::@5 - [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] + [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] - [47] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@9 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] + [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@9 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@11 init_plot_tables::@2 - [48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [48] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] + [48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [48] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [49] (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 ] [50] (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 ] [51] (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 ] [52] *((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 ] [53] (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 ] [54] *((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 ] - [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] - [56] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@12 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [55] (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 ] + [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@12 [ 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 - [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] + [57] (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 ] [58] (byte*~) init_plot_tables::yoffs#7 ← (byte*) init_plot_tables::yoffs#1 [ init_plot_tables::y#2 init_plot_tables::yoffs#7 ] to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@12 init_plot_tables::@7 [59] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@12/(byte*~) init_plot_tables::yoffs#6 init_plot_tables::@7/(byte*~) init_plot_tables::yoffs#7 ) [ 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::yoffs#4 init_plot_tables::y#1 ] - [61] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@11 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] + [61] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@11 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 [62] return [ ] @@ -5366,15 +5366,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@5 [70] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@5/(byte*~) init_screen::b#3 ) [ init_screen::b#2 ] - [71] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] + [71] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] [72] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] - [73] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@5 [ init_screen::b#1 ] + [73] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@5 [ init_screen::b#1 ] to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@6 [74] (byte*) init_screen::c#2 ← phi( init_screen::@6/(byte*~) init_screen::c#3 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] - [75] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] + [75] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] [76] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] - [77] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@6 [ init_screen::c#1 ] + [77] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@6 [ init_screen::c#1 ] to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 [78] return [ ] @@ -5426,17 +5426,17 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES to:@end @end: scope:[] from @5 main: scope:[main] from @5 - [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] - [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] - [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] - [4] *((const byte*) D018#0) ← (byte) 24 [ ] + [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] + [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] + [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] + [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] [5] call init_screen param-assignment [ ] to:main::@5 main::@5: scope:[main] from main [6] call init_plot_tables param-assignment [ ] to:main::@2 main::@2: scope:[main] from main::@2 main::@5 main::@7 - [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] + [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] to:main::@3 main::@3: scope:[main] from main::@2 [8] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] @@ -5453,7 +5453,7 @@ plots: scope:[plots] from main::@3 [13] phi() [ ] to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 - [14] (byte) plots::i#2 ← phi( plots/(byte) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] + [14] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] [15] (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 ] [16] (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 plots::$1 ] [17] (byte) plot::x#0 ← (byte~) plots::$0 [ plots::i#2 plots::$1 plot::x#0 ] @@ -5469,14 +5469,14 @@ plots::@return: scope:[plots] from plots::@3 to:@return plot: scope:[plot] from plots::@1 [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] - [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] + [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] [25] (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 ] [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] [27] (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 ] - [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] + [28] (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 ] [29] (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 ] - [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] - [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] + [30] (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 ] + [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] [32] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] [33] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] [34] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] @@ -5488,39 +5488,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 [36] phi() [ ] to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [37] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [37] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] + [37] (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 ] + [37] (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 ] + [38] (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 ] [39] *((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 ] [40] *((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 ] [41] *((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 ] - [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] - [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] + [42] (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 ] + [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [44] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] + [44] (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 ] [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] - [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] + [46] 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 ] to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [47] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] + [47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [47] (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 ] + [48] (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 ] [49] (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 ] [50] (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 ] [51] *((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 ] [52] (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 ] [53] *((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 ] - [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] - [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [54] (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 ] + [55] 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 ] to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] + [56] (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 ] to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 [57] (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 ] [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] - [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] + [59] 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 ] to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 [60] return [ ] @@ -5532,15 +5532,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 [62] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] - [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] + [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] - [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] + [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 [66] (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 ] - [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] + [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] - [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] + [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 [70] return [ ] @@ -5554,17 +5554,17 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED to:@end @end: scope:[] from @5 main: scope:[main] from @5 - [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) - [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) - [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) - [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) + [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) + [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) [5] call init_screen param-assignment [ ] ( main:0 [ ] ) to:main::@5 main::@5: scope:[main] from main [6] call init_plot_tables param-assignment [ ] ( main:0 [ ] ) to:main::@2 main::@2: scope:[main] from main::@2 main::@5 main::@7 - [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) + [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) to:main::@3 main::@3: scope:[main] from main::@2 [8] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) @@ -5581,7 +5581,7 @@ plots: scope:[plots] from main::@3 [13] phi() [ ] ( main:0::plots:9 [ ] ) to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 - [14] (byte) plots::i#2 ← phi( plots/(byte) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:0::plots:9 [ plots::i#2 ] ) + [14] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:0::plots:9 [ plots::i#2 ] ) [15] (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 ] ( main:0::plots:9 [ plots::i#2 plots::$0 ] ) [16] (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 plots::$1 ] ( main:0::plots:9 [ plots::i#2 plots::$0 plots::$1 ] ) [17] (byte) plot::x#0 ← (byte~) plots::$0 [ plots::i#2 plots::$1 plot::x#0 ] ( main:0::plots:9 [ plots::i#2 plots::$1 plot::x#0 ] ) @@ -5597,14 +5597,14 @@ plots::@return: scope:[plots] from plots::@3 to:@return plot: scope:[plot] from plots::@1 [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) - [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) + [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) [25] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ) [26] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) [27] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) - [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) + [28] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) [29] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) - [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) - [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) + [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) + [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) [32] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::plotter#0 plot::$5 ] ) [33] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::plotter#0 plot::$6 ] ) [34] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::plots:9::plot:19 [ plots::i#2 ] ) @@ -5616,39 +5616,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@5 [36] phi() [ ] ( main:0::init_plot_tables:6 [ ] ) to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [37] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [37] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) + [37] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [37] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) [39] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) [40] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) - [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) + [42] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [44] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) + [44] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) - [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [46] 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:0::init_plot_tables:6 [ 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 - [47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [47] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) + [47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [47] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) [49] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) [50] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) [51] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) [52] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) [53] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) - [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) + [55] 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:0::init_plot_tables:6 [ 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 - [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) + [56] (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:0::init_plot_tables:6 [ 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 [57] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) - [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [59] 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:0::init_plot_tables:6 [ 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 [60] return [ ] ( main:0::init_plot_tables:6 [ ] ) @@ -5660,15 +5660,15 @@ init_screen: scope:[init_screen] from main to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 [62] (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:0::init_screen:5 [ init_screen::b#2 ] ) - [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) + [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) - [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) + [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 [66] (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:0::init_screen:5 [ init_screen::c#2 ] ) - [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) + [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) - [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) + [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 [70] return [ ] ( main:0::init_screen:5 [ ] ) @@ -5676,32 +5676,32 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 DOMINATORS @begin dominated by @begin -@5 dominated by @5 @begin -@end dominated by @5 @begin @end -main dominated by @5 @begin main -main::@5 dominated by @5 @begin main::@5 main -main::@2 dominated by @5 @begin main::@2 main::@5 main -main::@3 dominated by @5 @begin main::@2 main::@3 main::@5 main -main::@7 dominated by @5 @begin main::@2 main::@3 main::@5 main::@7 main -main::@return dominated by @5 @begin main::@2 main::@3 main::@5 main::@7 main main::@return -plots dominated by @5 @begin main::@2 main::@3 main::@5 main plots -plots::@1 dominated by @5 @begin main::@2 main::@3 main::@5 plots::@1 main plots -plots::@3 dominated by @5 @begin main::@2 main::@3 main::@5 plots::@3 plots::@1 main plots -plots::@return dominated by @5 @begin main::@2 main::@3 main::@5 plots::@3 plots::@1 plots::@return main plots -plot dominated by @5 @begin main::@2 main::@3 plot main::@5 plots::@1 main plots -plot::@return dominated by @5 @begin main::@2 main::@3 main::@5 plot plots::@1 plot::@return main plots -init_plot_tables dominated by @5 init_plot_tables @begin main::@5 main -init_plot_tables::@1 dominated by @5 init_plot_tables::@1 @begin init_plot_tables main::@5 main -init_plot_tables::@2 dominated by init_plot_tables::@2 @5 @begin init_plot_tables init_plot_tables::@1 main::@5 main -init_plot_tables::@3 dominated by init_plot_tables::@3 @5 init_plot_tables::@2 @begin init_plot_tables init_plot_tables::@1 main::@5 main -init_plot_tables::@7 dominated by init_plot_tables::@3 @5 init_plot_tables::@2 @begin init_plot_tables init_plot_tables::@1 init_plot_tables::@7 main::@5 main -init_plot_tables::@4 dominated by init_plot_tables::@3 @5 init_plot_tables::@2 @begin init_plot_tables init_plot_tables::@1 init_plot_tables::@4 main::@5 main -init_plot_tables::@return dominated by init_plot_tables::@3 @5 init_plot_tables::@2 @begin init_plot_tables init_plot_tables::@1 init_plot_tables::@return init_plot_tables::@4 main::@5 main -init_plot_tables::@10 dominated by init_plot_tables::@10 @5 @begin init_plot_tables init_plot_tables::@1 main::@5 main -init_screen dominated by @5 @begin init_screen main -init_screen::@1 dominated by init_screen::@1 @5 @begin init_screen main -init_screen::@2 dominated by init_screen::@1 init_screen::@2 @5 @begin init_screen main -init_screen::@return dominated by init_screen::@1 init_screen::@2 @5 @begin init_screen init_screen::@return main +@5 dominated by @begin @5 +@end dominated by @end @begin @5 +main dominated by main @begin @5 +main::@5 dominated by main main::@5 @begin @5 +main::@2 dominated by main main::@2 main::@5 @begin @5 +main::@3 dominated by main main::@2 main::@5 main::@3 @begin @5 +main::@7 dominated by main::@7 main main::@2 main::@5 main::@3 @begin @5 +main::@return dominated by main::@return main::@7 main main::@2 main::@5 main::@3 @begin @5 +plots dominated by main main::@2 main::@5 main::@3 @begin plots @5 +plots::@1 dominated by plots::@1 main main::@2 main::@5 main::@3 @begin plots @5 +plots::@3 dominated by plots::@3 plots::@1 main main::@2 main::@5 main::@3 @begin plots @5 +plots::@return dominated by plots::@3 plots::@1 main main::@2 main::@5 main::@3 @begin plots::@return plots @5 +plot dominated by plots::@1 main plot main::@2 main::@5 main::@3 @begin plots @5 +plot::@return dominated by plots::@1 main plot main::@2 main::@5 main::@3 @begin plots @5 plot::@return +init_plot_tables dominated by main init_plot_tables main::@5 @begin @5 +init_plot_tables::@1 dominated by main init_plot_tables init_plot_tables::@1 main::@5 @begin @5 +init_plot_tables::@2 dominated by main init_plot_tables init_plot_tables::@2 init_plot_tables::@1 main::@5 @begin @5 +init_plot_tables::@3 dominated by main init_plot_tables init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@5 @begin @5 +init_plot_tables::@7 dominated by main init_plot_tables init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@5 init_plot_tables::@7 @begin @5 +init_plot_tables::@4 dominated by main init_plot_tables init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@5 init_plot_tables::@4 @begin @5 +init_plot_tables::@return dominated by main init_plot_tables init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@5 init_plot_tables::@4 @begin @5 init_plot_tables::@return +init_plot_tables::@10 dominated by main init_plot_tables init_plot_tables::@1 main::@5 init_plot_tables::@10 @begin @5 +init_screen dominated by main @begin init_screen @5 +init_screen::@1 dominated by main init_screen::@1 @begin init_screen @5 +init_screen::@2 dominated by main init_screen::@2 init_screen::@1 @begin init_screen @5 +init_screen::@return dominated by main init_screen::@2 init_screen::@1 @begin init_screen::@return init_screen @5 Found back edge: Loop head: main::@2 tails: main::@2 blocks: null Found back edge: Loop head: main::@2 tails: main::@7 blocks: null @@ -5807,9 +5807,9 @@ VARIABLE REGISTER WEIGHTS (byte*) plot::plotter_x (byte*) plot::plotter_x#1 2.0 (byte*) plot::plotter_x#2 0.8 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#1 2.0 -(byte*) plot::plotter_y#2 4.0 +(word) plot::plotter_y +(word) plot::plotter_y#1 2.0 +(word) plot::plotter_y#2 4.0 (byte) plot::x (byte) plot::x#0 9.727272727272727 (byte) plot::y @@ -5903,9 +5903,9 @@ Allocated zp ZP_PTR_BYTE:17 [ plot::plotter_x#1 ] Allocated zp ZP_BYTE:19 [ plot::$1 ] Allocated zp ZP_PTR_BYTE:20 [ plot::plotter_x#2 ] Allocated zp ZP_BYTE:22 [ plot::$2 ] -Allocated zp ZP_PTR_BYTE:23 [ plot::plotter_y#1 ] +Allocated zp ZP_WORD:23 [ plot::plotter_y#1 ] Allocated zp ZP_BYTE:25 [ plot::$3 ] -Allocated zp ZP_PTR_BYTE:26 [ plot::plotter_y#2 ] +Allocated zp ZP_WORD:26 [ plot::plotter_y#2 ] Allocated zp ZP_PTR_BYTE:28 [ plot::plotter#0 ] Allocated zp ZP_BYTE:30 [ plot::$5 ] Allocated zp ZP_BYTE:31 [ plot::$6 ] @@ -5957,16 +5957,16 @@ b5: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -5983,7 +5983,7 @@ main: { jmp b2 //SEG16 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b2 @@ -6016,7 +6016,7 @@ plots: { .label i = 2 //SEG28 [14] phi from plots to plots::@1 [phi:plots->plots::@1] b1_from_plots: - //SEG29 [14] phi (byte) plots::i#2 = (byte) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 + //SEG29 [14] phi (byte) plots::i#2 = (byte/signed byte/word/signed word) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -6076,11 +6076,11 @@ plot: { ldx x lda plot_xhi,x sta _0 - //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_zpby1 - lda #<0 - sta plotter_x + //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_zpby1 lda _0 sta plotter_x+1 + lda #<0 + sta plotter_x //SEG46 [25] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx x lda plot_xlo,x @@ -6094,7 +6094,7 @@ plot: { ldx y lda plot_yhi,x sta _2 - //SEG49 [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpptrby1=coby1_sethi_zpby1 + //SEG49 [28] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpwo1=coby1_sethi_zpby1 lda #<0 sta plotter_y lda _2 @@ -6103,19 +6103,19 @@ plot: { ldx y lda plot_ylo,x sta _3 - //SEG51 [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpptrby1=zpptrby2_setlo_zpby1 + //SEG51 [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpwo1=zpwo2_setlo_zpby1 lda _3 sta plotter_y_2 lda plotter_y+1 sta plotter_y_2+1 - //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby2_plus_zpptrby3 - lda plotter_x_2 + //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby2_plus_zpwo1 + lda plotter clc - adc plotter_y_2 - sta plotter - lda plotter_x_2+1 - adc plotter_y_2+1 - sta plotter+1 + adc plotter_x_2 + sta plotter_y_2 + lda plotter+1 + adc plotter_x_2+1 + sta plotter_y_2+1 //SEG53 [32] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx x lda plot_bit,x @@ -6149,10 +6149,10 @@ init_plot_tables: { .label yoffs = 6 //SEG59 [37] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- zpby1=coby1 + //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- zpby1=coby1 lda #$80 sta bits - //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- zpby1=coby1 + //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- zpby1=coby1 lda #0 sta x jmp b1 @@ -6163,7 +6163,7 @@ init_plot_tables: { jmp b1 //SEG65 init_plot_tables::@1 b1: - //SEG66 [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- zpby1=zpby2_band_coby1 + //SEG66 [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- zpby1=zpby2_band_coby1 lda x and #$f8 sta _0 @@ -6179,14 +6179,14 @@ init_plot_tables: { lda bits ldx x sta plot_bit,x - //SEG70 [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- zpby1=zpby1_ror_1 + //SEG70 [42] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- zpby1=zpby1_ror_1 lsr bits - //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- zpby1_neq_0_then_la1 + //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- zpby1_neq_0_then_la1 lda bits bne b10 //SEG72 [44] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- zpby1=coby1 + //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- zpby1=coby1 lda #$80 sta bits jmp b2 @@ -6194,17 +6194,17 @@ init_plot_tables: { b2: //SEG75 [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- zpby1=_inc_zpby1 inc x - //SEG76 [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- zpby1_neq_0_then_la1 + //SEG76 [46] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- zpby1_neq_0_then_la1 lda x bne b1_from_b2 //SEG77 [47] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs lda #0 sta yoffs+1 - //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- zpby1=coby1 + //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- zpby1=coby1 lda #0 sta y jmp b3 @@ -6215,7 +6215,7 @@ init_plot_tables: { jmp b3 //SEG83 init_plot_tables::@3 b3: - //SEG84 [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=zpby2_band_coby1 + //SEG84 [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=zpby2_band_coby1 lda y and #7 sta _6 @@ -6237,18 +6237,18 @@ init_plot_tables: { lda _9 ldx y sta plot_yhi,x - //SEG90 [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- zpby1=zpby2_band_coby1 + //SEG90 [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- zpby1=zpby2_band_coby1 lda y and #7 sta _10 - //SEG91 [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG91 [55] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- zpby1_neq_coby1_then_la1 lda _10 cmp #7 bne b4_from_b3 jmp b7 //SEG92 init_plot_tables::@7 b7: - //SEG93 [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG93 [56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -6265,7 +6265,7 @@ init_plot_tables: { b4: //SEG97 [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- zpby1=_inc_zpby1 inc y - //SEG98 [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- zpby1_neq_0_then_la1 + //SEG98 [59] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- zpby1_neq_0_then_la1 lda y bne b3_from_b4 jmp breturn @@ -6298,7 +6298,7 @@ init_screen: { jmp b1 //SEG109 init_screen::@1 b1: - //SEG110 [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG110 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #0 sta (b),y @@ -6307,7 +6307,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 @@ -6328,7 +6328,7 @@ init_screen: { jmp b2 //SEG117 init_screen::@2 b2: - //SEG118 [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG118 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -6337,7 +6337,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -6354,55 +6354,57 @@ init_screen: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp ZP_BYTE:30 [ plot::$5 ] has ALU potential. Equivalence Class zp ZP_BYTE:34 [ init_plot_tables::$7 ] has ALU potential. -Statement [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [26] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a +Statement [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ plot::x#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ plot::y#0 ] -Statement [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a -Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a +Statement [26] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a +Statement [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a +Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a Statement [33] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::plotter#0 plot::$6 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] Statement [34] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::plots:9::plot:19 [ plots::i#2 ] ) always clobbers reg byte y -Statement [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a +Statement [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] Statement [40] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a Statement [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] Statement [52] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a -Statement [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) always clobbers reg byte a -Statement [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) always clobbers reg byte a Statement [26] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a -Statement [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a -Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a +Statement [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a +Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a Statement [33] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::plotter#0 plot::$6 ] ) always clobbers reg byte a reg byte y Statement [34] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::plots:9::plot:19 [ plots::i#2 ] ) always clobbers reg byte y -Statement [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a +Statement [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a Statement [40] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a Statement [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a Statement [52] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a -Statement [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -6419,9 +6421,9 @@ Potential registers zp ZP_PTR_BYTE:17 [ plot::plotter_x#1 ] : zp ZP_PTR_BYTE:17 Potential registers zp ZP_BYTE:19 [ plot::$1 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_PTR_BYTE:20 [ plot::plotter_x#2 ] : zp ZP_PTR_BYTE:20 , Potential registers zp ZP_BYTE:22 [ plot::$2 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_PTR_BYTE:23 [ plot::plotter_y#1 ] : zp ZP_PTR_BYTE:23 , +Potential registers zp ZP_WORD:23 [ plot::plotter_y#1 ] : zp ZP_WORD:23 , Potential registers zp ZP_BYTE:25 [ plot::$3 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_PTR_BYTE:26 [ plot::plotter_y#2 ] : zp ZP_PTR_BYTE:26 , +Potential registers zp ZP_WORD:26 [ plot::plotter_y#2 ] : zp ZP_WORD:26 , Potential registers zp ZP_PTR_BYTE:28 [ plot::plotter#0 ] : zp ZP_PTR_BYTE:28 , Potential registers zp ZP_BYTE:30 [ plot::$5 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , reg byte alu , Potential registers zp ZP_BYTE:31 [ plot::$6 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , @@ -6436,39 +6438,39 @@ REGISTER UPLIFT SCOPES Uplift Scope [plots] 218.83: zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] 101: zp ZP_BYTE:12 [ plots::$0 ] 101: zp ZP_BYTE:13 [ plots::$1 ] Uplift Scope [init_plot_tables] 46.93: zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 39.11: zp ZP_PTR_BYTE:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.75: zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:32 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:34 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:35 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:36 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:37 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:33 [ init_plot_tables::$6 ] Uplift Scope [init_screen] 33: zp ZP_PTR_BYTE:8 [ init_screen::b#2 init_screen::b#1 ] 33: zp ZP_PTR_BYTE:10 [ init_screen::c#2 init_screen::c#1 ] -Uplift Scope [plot] 15: zp ZP_BYTE:15 [ plot::y#0 ] 9.73: zp ZP_BYTE:14 [ plot::x#0 ] 4: zp ZP_BYTE:16 [ plot::$0 ] 4: zp ZP_BYTE:19 [ plot::$1 ] 4: zp ZP_BYTE:22 [ plot::$2 ] 4: zp ZP_BYTE:25 [ plot::$3 ] 4: zp ZP_PTR_BYTE:26 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:30 [ plot::$5 ] 4: zp ZP_BYTE:31 [ plot::$6 ] 2: zp ZP_PTR_BYTE:17 [ plot::plotter_x#1 ] 2: zp ZP_PTR_BYTE:23 [ plot::plotter_y#1 ] 1.33: zp ZP_PTR_BYTE:28 [ plot::plotter#0 ] 0.8: zp ZP_PTR_BYTE:20 [ plot::plotter_x#2 ] +Uplift Scope [plot] 15: zp ZP_BYTE:15 [ plot::y#0 ] 9.73: zp ZP_BYTE:14 [ plot::x#0 ] 4: zp ZP_BYTE:16 [ plot::$0 ] 4: zp ZP_BYTE:19 [ plot::$1 ] 4: zp ZP_BYTE:22 [ plot::$2 ] 4: zp ZP_BYTE:25 [ plot::$3 ] 4: zp ZP_WORD:26 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:30 [ plot::$5 ] 4: zp ZP_BYTE:31 [ plot::$6 ] 2: zp ZP_PTR_BYTE:17 [ plot::plotter_x#1 ] 2: zp ZP_WORD:23 [ plot::plotter_y#1 ] 1.33: zp ZP_PTR_BYTE:28 [ plot::plotter#0 ] 0.8: zp ZP_PTR_BYTE:20 [ plot::plotter_x#2 ] Uplift Scope [main] Uplift Scope [] -Uplifting [plots] best 10673 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] reg byte y [ plots::$0 ] reg byte a [ plots::$1 ] +Uplifting [plots] best 10782 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] reg byte y [ plots::$0 ] reg byte a [ plots::$1 ] Uplift attempts [init_plot_tables] 10000/138240 (limiting to 10000) -Uplifting [init_plot_tables] best 10043 combination reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] zp ZP_PTR_BYTE:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:37 [ init_plot_tables::$10 ] zp ZP_BYTE:33 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 10152 combination reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] zp ZP_PTR_BYTE:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:37 [ init_plot_tables::$10 ] zp ZP_BYTE:33 [ init_plot_tables::$6 ] Limited combination testing to 10000 combinations of 138240 possible. -Uplifting [init_screen] best 10043 combination zp ZP_PTR_BYTE:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_PTR_BYTE:10 [ init_screen::c#2 init_screen::c#1 ] +Uplifting [init_screen] best 10152 combination zp ZP_PTR_BYTE:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_PTR_BYTE:10 [ init_screen::c#2 init_screen::c#1 ] Uplift attempts [plot] 10000/46080 (limiting to 10000) -Uplifting [plot] best 9598 combination reg byte x [ plot::y#0 ] reg byte y [ plot::x#0 ] reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] reg byte a [ plot::$3 ] zp ZP_PTR_BYTE:26 [ plot::plotter_y#2 ] reg byte a [ plot::$5 ] zp ZP_BYTE:31 [ plot::$6 ] zp ZP_PTR_BYTE:17 [ plot::plotter_x#1 ] zp ZP_PTR_BYTE:23 [ plot::plotter_y#1 ] zp ZP_PTR_BYTE:28 [ plot::plotter#0 ] zp ZP_PTR_BYTE:20 [ plot::plotter_x#2 ] +Uplifting [plot] best 9707 combination reg byte x [ plot::y#0 ] reg byte y [ plot::x#0 ] reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] reg byte a [ plot::$3 ] zp ZP_WORD:26 [ plot::plotter_y#2 ] reg byte a [ plot::$5 ] zp ZP_BYTE:31 [ plot::$6 ] zp ZP_PTR_BYTE:17 [ plot::plotter_x#1 ] zp ZP_WORD:23 [ plot::plotter_y#1 ] zp ZP_PTR_BYTE:28 [ plot::plotter#0 ] zp ZP_PTR_BYTE:20 [ plot::plotter_x#2 ] Limited combination testing to 10000 combinations of 46080 possible. -Uplifting [main] best 9598 combination -Uplifting [] best 9598 combination +Uplifting [main] best 9707 combination +Uplifting [] best 9707 combination MISSING FRAGMENTS zpby1=_deref_zpptrby1_bor_cowo1_derefidx_yby Attempting to uplift remaining variables inzp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] -Uplifting [plots] best 9598 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] +Uplifting [plots] best 9707 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ init_plot_tables::$10 ] -Uplifting [init_plot_tables] best 9538 combination reg byte a [ init_plot_tables::$10 ] +Uplifting [init_plot_tables] best 9647 combination reg byte a [ init_plot_tables::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ init_plot_tables::$6 ] -Uplifting [init_plot_tables] best 9538 combination zp ZP_BYTE:33 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 9647 combination zp ZP_BYTE:33 [ init_plot_tables::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ plot::$6 ] -Uplifting [plot] best 9532 combination reg byte a [ plot::$6 ] +Uplifting [plot] best 9641 combination reg byte a [ plot::$6 ] Coalescing zero page register [ zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] ] with [ zp ZP_BYTE:33 [ init_plot_tables::$6 ] ] Coalescing zero page register [ zp ZP_PTR_BYTE:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp ZP_PTR_BYTE:8 [ init_screen::b#2 init_screen::b#1 ] ] Coalescing zero page register [ zp ZP_PTR_BYTE:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ] with [ zp ZP_PTR_BYTE:10 [ init_screen::c#2 init_screen::c#1 ] ] Coalescing zero page register [ zp ZP_PTR_BYTE:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 ] ] with [ zp ZP_PTR_BYTE:17 [ plot::plotter_x#1 ] ] Coalescing zero page register [ zp ZP_PTR_BYTE:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#1 ] ] with [ zp ZP_PTR_BYTE:20 [ plot::plotter_x#2 ] ] Coalescing zero page register [ zp ZP_PTR_BYTE:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp ZP_PTR_BYTE:28 [ plot::plotter#0 ] ] -Coalescing zero page register [ zp ZP_PTR_BYTE:23 [ plot::plotter_y#1 ] ] with [ zp ZP_PTR_BYTE:26 [ plot::plotter_y#2 ] ] +Coalescing zero page register [ zp ZP_WORD:23 [ plot::plotter_y#1 ] ] with [ zp ZP_WORD:26 [ plot::plotter_y#2 ] ] Allocated (was zp ZP_PTR_BYTE:6) zp ZP_PTR_BYTE: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 ] -Allocated (was zp ZP_PTR_BYTE:23) zp ZP_PTR_BYTE:5 [ plot::plotter_y#1 plot::plotter_y#2 ] +Allocated (was zp ZP_WORD:23) zp ZP_WORD:5 [ plot::plotter_y#1 plot::plotter_y#2 ] Removing instruction jmp b5 Removing instruction jmp bend Removing instruction jmp b5 @@ -6530,16 +6532,16 @@ b5: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -6554,7 +6556,7 @@ main: { jsr init_plot_tables //SEG16 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b2 @@ -6582,7 +6584,7 @@ plots: { .label i = 2 //SEG28 [14] phi from plots to plots::@1 [phi:plots->plots::@1] b1_from_plots: - //SEG29 [14] phi (byte) plots::i#2 = (byte) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 + //SEG29 [14] phi (byte) plots::i#2 = (byte/signed byte/word/signed word) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -6624,7 +6626,7 @@ plot: { .label plotter = 3 //SEG44 [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) -- aby=cowo1_derefidx_yby lda plot_xhi,y - //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -6634,15 +6636,15 @@ plot: { sta plotter_x //SEG48 [27] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) -- aby=cowo1_derefidx_xby lda plot_yhi,x - //SEG49 [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG49 [28] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG50 [29] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) -- aby=cowo1_derefidx_xby lda plot_ylo,x - //SEG51 [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG51 [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -6669,9 +6671,9 @@ init_plot_tables: { .label yoffs = 3 //SEG59 [37] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG62 [37] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] @@ -6680,7 +6682,7 @@ init_plot_tables: { //SEG64 [37] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG65 init_plot_tables::@1 b1: - //SEG66 [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG66 [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG67 [39] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -6691,32 +6693,32 @@ init_plot_tables: { //SEG69 [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG70 [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG70 [42] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG72 [44] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG74 init_plot_tables::@2 b2: //SEG75 [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG76 [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG76 [46] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1_from_b2 //SEG77 [47] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs lda #0 sta yoffs+1 - //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 ldx #0 jmp b3 //SEG80 [47] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] @@ -6725,7 +6727,7 @@ init_plot_tables: { //SEG82 [47] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG83 init_plot_tables::@3 b3: - //SEG84 [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG84 [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -6739,15 +6741,15 @@ init_plot_tables: { lda yoffs+1 //SEG89 [53] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG90 [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG90 [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG91 [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG91 [55] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4_from_b3 //SEG92 init_plot_tables::@7 b7: - //SEG93 [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG93 [56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -6763,7 +6765,7 @@ init_plot_tables: { b4: //SEG97 [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG98 [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG98 [59] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3_from_b4 //SEG99 init_plot_tables::@return @@ -6794,7 +6796,7 @@ init_screen: { //SEG108 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG109 init_screen::@1 b1: - //SEG110 [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG110 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #0 sta (b),y @@ -6803,7 +6805,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 @@ -6823,7 +6825,7 @@ init_screen: { //SEG116 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG117 init_screen::@2 b2: - //SEG118 [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG118 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -6832,7 +6834,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -6891,15 +6893,15 @@ b5: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -6914,7 +6916,7 @@ main: { jsr init_plot_tables //SEG16 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b2 @@ -6942,7 +6944,7 @@ plots: { .label i = 2 //SEG28 [14] phi from plots to plots::@1 [phi:plots->plots::@1] b1_from_plots: - //SEG29 [14] phi (byte) plots::i#2 = (byte) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 + //SEG29 [14] phi (byte) plots::i#2 = (byte/signed byte/word/signed word) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -6984,7 +6986,7 @@ plot: { .label plotter = 3 //SEG44 [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) -- aby=cowo1_derefidx_yby lda plot_xhi,y - //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -6994,15 +6996,15 @@ plot: { sta plotter_x //SEG48 [27] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) -- aby=cowo1_derefidx_xby lda plot_yhi,x - //SEG49 [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG49 [28] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG50 [29] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) -- aby=cowo1_derefidx_xby lda plot_ylo,x - //SEG51 [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG51 [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -7028,9 +7030,9 @@ init_plot_tables: { .label yoffs = 3 //SEG59 [37] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG62 [37] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] @@ -7039,7 +7041,7 @@ init_plot_tables: { //SEG64 [37] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG65 init_plot_tables::@1 b1: - //SEG66 [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG66 [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG67 [39] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -7050,31 +7052,31 @@ init_plot_tables: { //SEG69 [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG70 [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG70 [42] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG72 [44] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG74 init_plot_tables::@2 b2: //SEG75 [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG76 [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG76 [46] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1_from_b2 //SEG77 [47] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax jmp b3 //SEG80 [47] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] @@ -7083,7 +7085,7 @@ init_plot_tables: { //SEG82 [47] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG83 init_plot_tables::@3 b3: - //SEG84 [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG84 [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -7097,15 +7099,15 @@ init_plot_tables: { lda yoffs+1 //SEG89 [53] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG90 [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG90 [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG91 [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG91 [55] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4_from_b3 //SEG92 init_plot_tables::@7 b7: - //SEG93 [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG93 [56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -7121,7 +7123,7 @@ init_plot_tables: { b4: //SEG97 [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG98 [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG98 [59] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3_from_b4 //SEG99 init_plot_tables::@return @@ -7152,7 +7154,7 @@ init_screen: { //SEG108 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG109 init_screen::@1 b1: - //SEG110 [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG110 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -7161,7 +7163,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 @@ -7181,7 +7183,7 @@ init_screen: { //SEG116 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG117 init_screen::@2 b2: - //SEG118 [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG118 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -7190,7 +7192,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -7261,15 +7263,15 @@ b5: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -7283,7 +7285,7 @@ main: { jsr init_plot_tables //SEG16 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b2 @@ -7311,7 +7313,7 @@ plots: { .label i = 2 //SEG28 [14] phi from plots to plots::@1 [phi:plots->plots::@1] b1_from_plots: - //SEG29 [14] phi (byte) plots::i#2 = (byte) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 + //SEG29 [14] phi (byte) plots::i#2 = (byte/signed byte/word/signed word) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -7352,7 +7354,7 @@ plot: { .label plotter = 3 //SEG44 [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) -- aby=cowo1_derefidx_yby lda plot_xhi,y - //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -7362,15 +7364,15 @@ plot: { sta plotter_x //SEG48 [27] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) -- aby=cowo1_derefidx_xby lda plot_yhi,x - //SEG49 [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG49 [28] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG50 [29] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) -- aby=cowo1_derefidx_xby lda plot_ylo,x - //SEG51 [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG51 [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -7396,9 +7398,9 @@ init_plot_tables: { .label yoffs = 3 //SEG59 [37] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG62 [37] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] @@ -7406,7 +7408,7 @@ init_plot_tables: { //SEG64 [37] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG65 init_plot_tables::@1 b1: - //SEG66 [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG66 [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG67 [39] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -7417,31 +7419,31 @@ init_plot_tables: { //SEG69 [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG70 [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG70 [42] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG72 [44] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG74 init_plot_tables::@2 b2: //SEG75 [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG76 [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG76 [46] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG77 [47] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax jmp b3 //SEG80 [47] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] @@ -7449,7 +7451,7 @@ init_plot_tables: { //SEG82 [47] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG83 init_plot_tables::@3 b3: - //SEG84 [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG84 [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -7463,15 +7465,15 @@ init_plot_tables: { lda yoffs+1 //SEG89 [53] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG90 [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG90 [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG91 [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG91 [55] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4 //SEG92 init_plot_tables::@7 b7: - //SEG93 [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG93 [56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -7485,7 +7487,7 @@ init_plot_tables: { b4: //SEG97 [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG98 [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG98 [59] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG99 init_plot_tables::@return @@ -7514,7 +7516,7 @@ init_screen: { //SEG108 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG109 init_screen::@1 b1: - //SEG110 [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG110 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -7523,7 +7525,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 @@ -7542,7 +7544,7 @@ init_screen: { //SEG116 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG117 init_screen::@2 b2: - //SEG118 [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG118 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -7551,7 +7553,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 @@ -7622,15 +7624,15 @@ ASSEMBLER //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -7642,7 +7644,7 @@ main: { jsr init_plot_tables //SEG16 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b2 @@ -7665,7 +7667,7 @@ main: { plots: { .label i = 2 //SEG28 [14] phi from plots to plots::@1 [phi:plots->plots::@1] - //SEG29 [14] phi (byte) plots::i#2 = (byte) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 + //SEG29 [14] phi (byte) plots::i#2 = (byte/signed byte/word/signed word) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -7704,7 +7706,7 @@ plot: { .label plotter = 3 //SEG44 [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) -- aby=cowo1_derefidx_yby lda plot_xhi,y - //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -7714,15 +7716,15 @@ plot: { sta plotter_x //SEG48 [27] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) -- aby=cowo1_derefidx_xby lda plot_yhi,x - //SEG49 [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG49 [28] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG50 [29] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) -- aby=cowo1_derefidx_xby lda plot_ylo,x - //SEG51 [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG51 [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -7746,9 +7748,9 @@ init_plot_tables: { .label _6 = 2 .label yoffs = 3 //SEG59 [37] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG62 [37] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] @@ -7756,7 +7758,7 @@ init_plot_tables: { //SEG64 [37] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG65 init_plot_tables::@1 b1: - //SEG66 [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG66 [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG67 [39] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -7767,29 +7769,29 @@ init_plot_tables: { //SEG69 [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG70 [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG70 [42] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG72 [44] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG74 init_plot_tables::@2 b2: //SEG75 [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG76 [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG76 [46] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG77 [47] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax jmp b3 //SEG80 [47] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] @@ -7797,7 +7799,7 @@ init_plot_tables: { //SEG82 [47] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG83 init_plot_tables::@3 b3: - //SEG84 [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG84 [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -7811,14 +7813,14 @@ init_plot_tables: { lda yoffs+1 //SEG89 [53] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG90 [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG90 [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG91 [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG91 [55] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4 //SEG92 init_plot_tables::@7 - //SEG93 [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG93 [56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -7832,7 +7834,7 @@ init_plot_tables: { b4: //SEG97 [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG98 [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG98 [59] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG99 init_plot_tables::@return @@ -7859,7 +7861,7 @@ init_screen: { //SEG108 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG109 init_screen::@1 b1: - //SEG110 [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG110 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -7868,7 +7870,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 @@ -7886,7 +7888,7 @@ init_screen: { //SEG116 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG117 init_screen::@2 b2: - //SEG118 [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG118 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -7895,7 +7897,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 @@ -7950,15 +7952,15 @@ ASSEMBLER //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -7970,7 +7972,7 @@ main: { jsr init_plot_tables //SEG16 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b2 @@ -7993,7 +7995,7 @@ main: { plots: { .label i = 2 //SEG28 [14] phi from plots to plots::@1 [phi:plots->plots::@1] - //SEG29 [14] phi (byte) plots::i#2 = (byte) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 + //SEG29 [14] phi (byte) plots::i#2 = (byte/signed byte/word/signed word) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 lda #0 sta i //SEG30 [14] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1] @@ -8031,7 +8033,7 @@ plot: { .label plotter = 3 //SEG44 [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) -- aby=cowo1_derefidx_yby lda plot_xhi,y - //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -8041,15 +8043,15 @@ plot: { sta plotter_x //SEG48 [27] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) -- aby=cowo1_derefidx_xby lda plot_yhi,x - //SEG49 [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG49 [28] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG50 [29] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) -- aby=cowo1_derefidx_xby lda plot_ylo,x - //SEG51 [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG51 [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -8073,16 +8075,16 @@ init_plot_tables: { .label _6 = 2 .label yoffs = 3 //SEG59 [37] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 //SEG62 [37] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] //SEG63 [37] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy //SEG64 [37] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG65 init_plot_tables::@1 b1: - //SEG66 [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG66 [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG67 [39] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -8093,36 +8095,36 @@ init_plot_tables: { //SEG69 [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG70 [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG70 [42] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG72 [44] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG74 init_plot_tables::@2 b2: //SEG75 [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG76 [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG76 [46] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG77 [47] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax //SEG80 [47] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] //SEG81 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy //SEG82 [47] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG83 init_plot_tables::@3 b3: - //SEG84 [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG84 [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -8136,14 +8138,14 @@ init_plot_tables: { lda yoffs+1 //SEG89 [53] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG90 [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG90 [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG91 [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG91 [55] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4 //SEG92 init_plot_tables::@7 - //SEG93 [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG93 [56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -8157,7 +8159,7 @@ init_plot_tables: { b4: //SEG97 [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG98 [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG98 [59] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG99 init_plot_tables::@return @@ -8183,7 +8185,7 @@ init_screen: { //SEG108 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG109 init_screen::@1 b1: - //SEG110 [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG110 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -8192,7 +8194,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 @@ -8209,7 +8211,7 @@ init_screen: { //SEG116 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG117 init_screen::@2 b2: - //SEG118 [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG118 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -8218,7 +8220,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 @@ -8237,13 +8239,13 @@ FINAL SYMBOL TABLE (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = (word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 BITMAP = (word) 8192 +(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 (byte) BMM -(const byte) BMM#0 BMM = (byte) 32 +(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (byte*) COLS (const byte*) COLS#0 COLS = (word) 55296 (byte) CSEL -(const byte) CSEL#0 CSEL = (byte) 8 +(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (byte*) D011 (const byte*) D011#0 D011 = (word) 53265 (byte*) D016 @@ -8251,21 +8253,21 @@ FINAL SYMBOL TABLE (byte*) D018 (const byte*) D018#0 D018 = (word) 53272 (byte) DEN -(const byte) DEN#0 DEN = (byte) 16 +(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (byte) ECM -(const byte) ECM#0 ECM = (byte) 64 +(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (byte*) FGCOL (const byte*) FGCOL#0 FGCOL = (word) 53281 (byte) MCM -(const byte) MCM#0 MCM = (byte) 16 +(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (byte*) RASTER (const byte*) RASTER#0 RASTER = (word) 53266 (byte) RSEL -(const byte) RSEL#0 RSEL = (byte) 8 +(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8 (byte) RST8 -(const byte) RST8#0 RST8 = (byte) 128 +(const byte) RST8#0 RST8 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) init_plot_tables() (byte~) init_plot_tables::$0 reg byte a 22.0 (byte~) init_plot_tables::$10 reg byte a 22.0 @@ -8323,23 +8325,23 @@ FINAL SYMBOL TABLE (byte*) plot::plotter_x (byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:3 2.0 (byte*) plot::plotter_x#2 plotter_x zp ZP_PTR_BYTE:3 0.8 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:5 2.0 -(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:5 4.0 +(word) plot::plotter_y +(word) plot::plotter_y#1 plotter_y zp ZP_WORD:5 2.0 +(word) plot::plotter_y#2 plotter_y zp ZP_WORD:5 4.0 (byte) plot::x (byte) plot::x#0 reg byte y 9.727272727272727 (byte) plot::y (byte) plot::y#0 reg byte x 15.000000000000002 (byte[]) plot_bit -(const byte[]) plot_bit#0 plot_bit = (word) 5120 +(const byte[]) plot_bit#0 plot_bit = (word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 plot_xhi = (word) 4352 +(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 plot_xlo = (word) 4096 +(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 plot_yhi = (word) 4864 +(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 plot_ylo = (word) 4608 +(const byte[]) plot_ylo#0 plot_ylo = (word/signed word) 4608 (void()) plots() (byte~) plots::$0 reg byte y 101.0 (byte~) plots::$1 reg byte a 101.0 @@ -8350,11 +8352,11 @@ FINAL SYMBOL TABLE (byte) plots::i#1 i zp ZP_BYTE:2 151.5 (byte) plots::i#2 i zp ZP_BYTE:2 67.33333333333333 (byte) plots_cnt -(const byte) plots_cnt#0 plots_cnt = (byte) 8 +(const byte) plots_cnt#0 plots_cnt = (byte/signed byte/word/signed word) 8 (byte[]) plots_x -(const byte[]) plots_x#0 plots_x = { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } +(const byte[]) plots_x#0 plots_x = { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } (byte[]) plots_y -(const byte[]) plots_y#0 plots_y = { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } +(const byte[]) plots_y#0 plots_y = { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } zp ZP_BYTE:2 [ plots::i#2 plots::i#1 init_plot_tables::$6 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] @@ -8368,7 +8370,7 @@ reg byte x [ plot::y#0 ] reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] -zp ZP_PTR_BYTE:5 [ plot::plotter_y#1 plot::plotter_y#2 ] +zp ZP_WORD:5 [ plot::plotter_y#1 plot::plotter_y#2 ] reg byte a [ plot::$3 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] @@ -8415,15 +8417,15 @@ FINAL CODE //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta BGCOL - //SEG8 [2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 sta FGCOL - //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG9 [3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #BMM|DEN|RSEL|3 sta D011 - //SEG10 [4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG10 [4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$18 sta D018 //SEG11 [5] call init_screen param-assignment [ ] ( main:0 [ ] ) @@ -8435,7 +8437,7 @@ main: { jsr init_plot_tables //SEG16 main::@2 b2: - //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG17 [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b2 @@ -8458,7 +8460,7 @@ main: { plots: { .label i = 2 //SEG28 [14] phi from plots to plots::@1 [phi:plots->plots::@1] - //SEG29 [14] phi (byte) plots::i#2 = (byte) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 + //SEG29 [14] phi (byte) plots::i#2 = (byte/signed byte/word/signed word) 0 [phi:plots->plots::@1#0] -- zpby1=coby1 lda #0 sta i //SEG30 [14] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1] @@ -8496,7 +8498,7 @@ plot: { .label plotter = 3 //SEG44 [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) -- aby=cowo1_derefidx_yby lda plot_xhi,y - //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG45 [24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=coby1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -8506,15 +8508,15 @@ plot: { sta plotter_x //SEG48 [27] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) -- aby=cowo1_derefidx_xby lda plot_yhi,x - //SEG49 [28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpptrby1=coby1_sethi_aby + //SEG49 [28] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- zpwo1=coby1_sethi_aby sta plotter_y+1 lda #<0 sta plotter_y //SEG50 [29] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) -- aby=cowo1_derefidx_xby lda plot_ylo,x - //SEG51 [30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpptrby1=zpptrby1_setlo_aby + //SEG51 [30] (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:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- zpwo1=zpwo1_setlo_aby sta plotter_y - //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpptrby2 + //SEG52 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 lda plotter clc adc plotter_y @@ -8538,16 +8540,16 @@ init_plot_tables: { .label _6 = 2 .label yoffs = 3 //SEG59 [37] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 + //SEG60 [37] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- yby=coby1 ldy #$80 - //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 + //SEG61 [37] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- xby=coby1 ldx #0 //SEG62 [37] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] //SEG63 [37] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy //SEG64 [37] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy //SEG65 init_plot_tables::@1 b1: - //SEG66 [38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 + //SEG66 [38] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- aby=xby_band_coby1 txa and #$f8 //SEG67 [39] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=aby @@ -8558,36 +8560,36 @@ init_plot_tables: { //SEG69 [41] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- cowo1_derefidx_xby=yby tya sta plot_bit,x - //SEG70 [42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 + //SEG70 [42] (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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- yby=yby_ror_1 tya lsr tay - //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 + //SEG71 [43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] ) -- yby_neq_0_then_la1 cpy #0 bne b10 //SEG72 [44] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 + //SEG73 [44] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- yby=coby1 ldy #$80 //SEG74 init_plot_tables::@2 b2: //SEG75 [45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby=_inc_xby inx - //SEG76 [46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 + //SEG76 [46] 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG77 [47] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 lda #0 sta yoffs sta yoffs+1 - //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 + //SEG79 [47] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- xby=coby1 tax //SEG80 [47] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] //SEG81 [47] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy //SEG82 [47] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy //SEG83 init_plot_tables::@3 b3: - //SEG84 [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 + //SEG84 [48] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- zpby1=xby_band_coby1 txa and #7 sta _6 @@ -8601,14 +8603,14 @@ init_plot_tables: { lda yoffs+1 //SEG89 [53] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- cowo1_derefidx_xby=aby sta plot_yhi,x - //SEG90 [54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 + //SEG90 [54] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- aby=xby_band_coby1 txa and #7 - //SEG91 [55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 + //SEG91 [55] 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- aby_neq_coby1_then_la1 cmp #7 bne b4 //SEG92 init_plot_tables::@7 - //SEG93 [56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 + //SEG93 [56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- zpptrby1=zpptrby1_plus_cowo1 lda yoffs clc adc #<$140 @@ -8622,7 +8624,7 @@ init_plot_tables: { b4: //SEG97 [58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby=_inc_xby inx - //SEG98 [59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 + //SEG98 [59] 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG99 init_plot_tables::@return @@ -8648,7 +8650,7 @@ init_screen: { //SEG108 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy //SEG109 init_screen::@1 b1: - //SEG110 [63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 + //SEG110 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 tya sta (b),y @@ -8657,7 +8659,7 @@ init_screen: { bne !+ inc b+1 !: - //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG112 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 @@ -8674,7 +8676,7 @@ init_screen: { //SEG116 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy //SEG117 init_screen::@2 b2: - //SEG118 [67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 + //SEG118 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #$14 sta (c),y @@ -8683,7 +8685,7 @@ init_screen: { bne !+ inc c+1 !: - //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 + //SEG120 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] ) -- zpptrby1_neq_cowo1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.sym b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.sym index e652f70e9..d7a93b6f3 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.sym @@ -4,13 +4,13 @@ (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = (word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 BITMAP = (word) 8192 +(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 (byte) BMM -(const byte) BMM#0 BMM = (byte) 32 +(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (byte*) COLS (const byte*) COLS#0 COLS = (word) 55296 (byte) CSEL -(const byte) CSEL#0 CSEL = (byte) 8 +(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (byte*) D011 (const byte*) D011#0 D011 = (word) 53265 (byte*) D016 @@ -18,21 +18,21 @@ (byte*) D018 (const byte*) D018#0 D018 = (word) 53272 (byte) DEN -(const byte) DEN#0 DEN = (byte) 16 +(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (byte) ECM -(const byte) ECM#0 ECM = (byte) 64 +(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (byte*) FGCOL (const byte*) FGCOL#0 FGCOL = (word) 53281 (byte) MCM -(const byte) MCM#0 MCM = (byte) 16 +(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (byte*) RASTER (const byte*) RASTER#0 RASTER = (word) 53266 (byte) RSEL -(const byte) RSEL#0 RSEL = (byte) 8 +(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8 (byte) RST8 -(const byte) RST8#0 RST8 = (byte) 128 +(const byte) RST8#0 RST8 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) init_plot_tables() (byte~) init_plot_tables::$0 reg byte a 22.0 (byte~) init_plot_tables::$10 reg byte a 22.0 @@ -90,23 +90,23 @@ (byte*) plot::plotter_x (byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:3 2.0 (byte*) plot::plotter_x#2 plotter_x zp ZP_PTR_BYTE:3 0.8 -(byte*) plot::plotter_y -(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:5 2.0 -(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:5 4.0 +(word) plot::plotter_y +(word) plot::plotter_y#1 plotter_y zp ZP_WORD:5 2.0 +(word) plot::plotter_y#2 plotter_y zp ZP_WORD:5 4.0 (byte) plot::x (byte) plot::x#0 reg byte y 9.727272727272727 (byte) plot::y (byte) plot::y#0 reg byte x 15.000000000000002 (byte[]) plot_bit -(const byte[]) plot_bit#0 plot_bit = (word) 5120 +(const byte[]) plot_bit#0 plot_bit = (word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 plot_xhi = (word) 4352 +(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 plot_xlo = (word) 4096 +(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 plot_yhi = (word) 4864 +(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 plot_ylo = (word) 4608 +(const byte[]) plot_ylo#0 plot_ylo = (word/signed word) 4608 (void()) plots() (byte~) plots::$0 reg byte y 101.0 (byte~) plots::$1 reg byte a 101.0 @@ -117,11 +117,11 @@ (byte) plots::i#1 i zp ZP_BYTE:2 151.5 (byte) plots::i#2 i zp ZP_BYTE:2 67.33333333333333 (byte) plots_cnt -(const byte) plots_cnt#0 plots_cnt = (byte) 8 +(const byte) plots_cnt#0 plots_cnt = (byte/signed byte/word/signed word) 8 (byte[]) plots_x -(const byte[]) plots_x#0 plots_x = { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40 } +(const byte[]) plots_x#0 plots_x = { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40 } (byte[]) plots_y -(const byte[]) plots_y#0 plots_y = { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40 } +(const byte[]) plots_y#0 plots_y = { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40 } zp ZP_BYTE:2 [ plots::i#2 plots::i#1 init_plot_tables::$6 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] @@ -135,7 +135,7 @@ reg byte x [ plot::y#0 ] reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] -zp ZP_PTR_BYTE:5 [ plot::plotter_y#1 plot::plotter_y#2 ] +zp ZP_WORD:5 [ plot::plotter_y#1 plot::plotter_y#2 ] reg byte a [ plot::$3 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.cfg b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.cfg index bcbf1ac89..6201ee752 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.cfg @@ -8,26 +8,26 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::y#2 ← phi( main/(byte) 4 main::@2/(byte) main::y#4 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@2/(byte) main::e#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte) main::x#2 ← phi( main/(byte) 4 main::@2/(byte) main::x#1 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 main::@2/(byte*) main::cursor#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::y#4 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::x#1 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 main::@2/(byte*) main::cursor#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) - [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) - [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) + [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) + [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) - [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) + [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) + [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [11] (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) [11] (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) [11] (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) - [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) + [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) to:main::@return main::@return: scope:[main] from main::@2 [13] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log index 761b55d18..432a8d901 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log @@ -25,44 +25,44 @@ void main() { } while (x<(x1+1)); } PROGRAM - (byte) STAR ← (byte) 81 - (byte[1000]) SCREEN ← (word) 1024 + (byte) STAR ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN ← (word/signed word) 1024 proc (void()) main() - (byte) main::x0 ← (byte) 4 - (byte) main::y0 ← (byte) 4 - (byte) main::x1 ← (byte) 39 - (byte) main::y1 ← (byte) 24 + (byte) main::x0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1 - (byte) main::x0 (byte) main::xd ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1 - (byte) main::y0 (byte) main::yd ← (byte~) main::$1 (byte) main::x ← (byte) main::x0 (byte) main::y ← (byte) main::y0 - (byte~) main::$2 ← (byte) main::yd / (byte) 2 + (byte~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word) 2 (byte) main::e ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y * (byte) 40 + (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN + (byte~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x (byte*) main::cursor ← (byte*~) main::$5 main::@1: *((byte*) main::cursor) ← (byte) STAR - (byte~) main::$6 ← (byte) main::x + (byte) 1 + (byte~) main::$6 ← (byte) main::x + (byte/signed byte/word/signed word) 1 (byte) main::x ← (byte~) main::$6 - (byte*~) main::$7 ← (byte*) main::cursor + (byte) 1 + (byte*~) main::$7 ← (byte*) main::cursor + (byte/signed byte/word/signed word) 1 (byte*) main::cursor ← (byte*~) main::$7 (byte~) main::$8 ← (byte) main::e + (byte) main::yd (byte) main::e ← (byte~) main::$8 (boolean~) main::$9 ← (byte) main::xd < (byte) main::e (boolean~) main::$10 ← ! (boolean~) main::$9 if((boolean~) main::$10) goto main::@2 - (byte~) main::$11 ← (byte) main::y + (byte) 1 + (byte~) main::$11 ← (byte) main::y + (byte/signed byte/word/signed word) 1 (byte) main::y ← (byte~) main::$11 - (byte*~) main::$12 ← (byte*) main::cursor + (byte) 40 + (byte*~) main::$12 ← (byte*) main::cursor + (byte/signed byte/word/signed word) 40 (byte*) main::cursor ← (byte*~) main::$12 (byte~) main::$13 ← (byte) main::e - (byte) main::xd (byte) main::e ← (byte~) main::$13 main::@2: - (byte~) main::$14 ← (byte) main::x1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 main::@return: @@ -106,32 +106,32 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte) STAR ← (byte) 81 - (byte[1000]) SCREEN ← (word) 1024 + (byte) STAR ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::x0 ← (byte) 4 - (byte) main::y0 ← (byte) 4 - (byte) main::x1 ← (byte) 39 - (byte) main::y1 ← (byte) 24 + (byte) main::x0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1 - (byte) main::x0 (byte) main::xd ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1 - (byte) main::y0 (byte) main::yd ← (byte~) main::$1 (byte) main::x ← (byte) main::x0 (byte) main::y ← (byte) main::y0 - (byte~) main::$2 ← (byte) main::yd / (byte) 2 + (byte~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word) 2 (byte) main::e ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y * (byte) 40 + (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN + (byte~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x (byte*) main::cursor ← (byte*~) main::$5 to:main::@1 main::@1: scope:[main] from main main::@2 *((byte*) main::cursor) ← (byte) STAR - (byte~) main::$6 ← (byte) main::x + (byte) 1 + (byte~) main::$6 ← (byte) main::x + (byte/signed byte/word/signed word) 1 (byte) main::x ← (byte~) main::$6 - (byte*~) main::$7 ← (byte*) main::cursor + (byte) 1 + (byte*~) main::$7 ← (byte*) main::cursor + (byte/signed byte/word/signed word) 1 (byte*) main::cursor ← (byte*~) main::$7 (byte~) main::$8 ← (byte) main::e + (byte) main::yd (byte) main::e ← (byte~) main::$8 @@ -140,14 +140,14 @@ main::@1: scope:[main] from main main::@2 if((boolean~) main::$10) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 - (byte~) main::$14 ← (byte) main::x1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 - (byte~) main::$11 ← (byte) main::y + (byte) 1 + (byte~) main::$11 ← (byte) main::y + (byte/signed byte/word/signed word) 1 (byte) main::y ← (byte~) main::$11 - (byte*~) main::$12 ← (byte*) main::cursor + (byte) 40 + (byte*~) main::$12 ← (byte*) main::cursor + (byte/signed byte/word/signed word) 40 (byte*) main::cursor ← (byte*~) main::$12 (byte~) main::$13 ← (byte) main::e - (byte) main::xd (byte) main::e ← (byte~) main::$13 @@ -165,32 +165,32 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte) STAR ← (byte) 81 - (byte[1000]) SCREEN ← (word) 1024 + (byte) STAR ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::x0 ← (byte) 4 - (byte) main::y0 ← (byte) 4 - (byte) main::x1 ← (byte) 39 - (byte) main::y1 ← (byte) 24 + (byte) main::x0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1 - (byte) main::x0 (byte) main::xd ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1 - (byte) main::y0 (byte) main::yd ← (byte~) main::$1 (byte) main::x ← (byte) main::x0 (byte) main::y ← (byte) main::y0 - (byte~) main::$2 ← (byte) main::yd / (byte) 2 + (byte~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word) 2 (byte) main::e ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y * (byte) 40 + (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN + (byte~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x (byte*) main::cursor ← (byte*~) main::$5 to:main::@1 main::@1: scope:[main] from main main::@2 *((byte*) main::cursor) ← (byte) STAR - (byte~) main::$6 ← (byte) main::x + (byte) 1 + (byte~) main::$6 ← (byte) main::x + (byte/signed byte/word/signed word) 1 (byte) main::x ← (byte~) main::$6 - (byte*~) main::$7 ← (byte*) main::cursor + (byte) 1 + (byte*~) main::$7 ← (byte*) main::cursor + (byte/signed byte/word/signed word) 1 (byte*) main::cursor ← (byte*~) main::$7 (byte~) main::$8 ← (byte) main::e + (byte) main::yd (byte) main::e ← (byte~) main::$8 @@ -199,14 +199,14 @@ main::@1: scope:[main] from main main::@2 if((boolean~) main::$10) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 - (byte~) main::$14 ← (byte) main::x1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte~) main::$11 ← (byte) main::y + (byte) 1 + (byte~) main::$11 ← (byte) main::y + (byte/signed byte/word/signed word) 1 (byte) main::y ← (byte~) main::$11 - (byte*~) main::$12 ← (byte*) main::cursor + (byte) 40 + (byte*~) main::$12 ← (byte*) main::cursor + (byte/signed byte/word/signed word) 40 (byte*) main::cursor ← (byte*~) main::$12 (byte~) main::$13 ← (byte) main::e - (byte) main::xd (byte) main::e ← (byte~) main::$13 @@ -223,32 +223,32 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte) STAR ← (byte) 81 - (byte[1000]) SCREEN ← (word) 1024 + (byte) STAR ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::x0 ← (byte) 4 - (byte) main::y0 ← (byte) 4 - (byte) main::x1 ← (byte) 39 - (byte) main::y1 ← (byte) 24 + (byte) main::x0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1 - (byte) main::x0 (byte) main::xd ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1 - (byte) main::y0 (byte) main::yd ← (byte~) main::$1 (byte) main::x ← (byte) main::x0 (byte) main::y ← (byte) main::y0 - (byte~) main::$2 ← (byte) main::yd / (byte) 2 + (byte~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word) 2 (byte) main::e ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y * (byte) 40 + (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN + (byte~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x (byte*) main::cursor ← (byte*~) main::$5 to:main::@1 main::@1: scope:[main] from main main::@2 *((byte*) main::cursor) ← (byte) STAR - (byte~) main::$6 ← (byte) main::x + (byte) 1 + (byte~) main::$6 ← (byte) main::x + (byte/signed byte/word/signed word) 1 (byte) main::x ← (byte~) main::$6 - (byte*~) main::$7 ← (byte*) main::cursor + (byte) 1 + (byte*~) main::$7 ← (byte*) main::cursor + (byte/signed byte/word/signed word) 1 (byte*) main::cursor ← (byte*~) main::$7 (byte~) main::$8 ← (byte) main::e + (byte) main::yd (byte) main::e ← (byte~) main::$8 @@ -257,14 +257,14 @@ main::@1: scope:[main] from main main::@2 if((boolean~) main::$10) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 - (byte~) main::$14 ← (byte) main::x1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte~) main::$11 ← (byte) main::y + (byte) 1 + (byte~) main::$11 ← (byte) main::y + (byte/signed byte/word/signed word) 1 (byte) main::y ← (byte~) main::$11 - (byte*~) main::$12 ← (byte*) main::cursor + (byte) 40 + (byte*~) main::$12 ← (byte*) main::cursor + (byte/signed byte/word/signed word) 40 (byte*) main::cursor ← (byte*~) main::$12 (byte~) main::$13 ← (byte) main::e - (byte) main::xd (byte) main::e ← (byte~) main::$13 @@ -284,25 +284,25 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte) STAR#0 ← (byte) 81 - (byte[1000]) SCREEN#0 ← (word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) STAR#2 ← phi( @1/(byte) STAR#4 ) (byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#2 ) - (byte) main::x0#0 ← (byte) 4 - (byte) main::y0#0 ← (byte) 4 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::x0#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y0#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1#0 - (byte) main::x0#0 (byte) main::xd#0 ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1#0 - (byte) main::y0#0 (byte) main::yd#0 ← (byte~) main::$1 (byte) main::x#0 ← (byte) main::x0#0 (byte) main::y#0 ← (byte) main::y0#0 - (byte~) main::$2 ← (byte) main::yd#0 / (byte) 2 + (byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x#0 (byte*) main::cursor#0 ← (byte*~) main::$5 @@ -317,9 +317,9 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) (byte) STAR#1 ← phi( main/(byte) STAR#2 main::@2/(byte) STAR#3 ) *((byte*) main::cursor#3) ← (byte) STAR#1 - (byte~) main::$6 ← (byte) main::x#2 + (byte) 1 + (byte~) main::$6 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte~) main::$6 - (byte*~) main::$7 ← (byte*) main::cursor#3 + (byte) 1 + (byte*~) main::$7 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte*) main::cursor#1 ← (byte*~) main::$7 (byte~) main::$8 ← (byte) main::e#3 + (byte) main::yd#1 (byte) main::e#1 ← (byte~) main::$8 @@ -336,7 +336,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) STAR#3 ← phi( main::@1/(byte) STAR#1 main::@3/(byte) STAR#5 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 ) - (byte~) main::$14 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x#3 < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return @@ -349,9 +349,9 @@ main::@3: scope:[main] from main::@1 (byte) main::e#4 ← phi( main::@1/(byte) main::e#1 ) (byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#1 ) (byte) main::y#2 ← phi( main::@1/(byte) main::y#3 ) - (byte~) main::$11 ← (byte) main::y#2 + (byte) 1 + (byte~) main::$11 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 (byte) main::y#1 ← (byte~) main::$11 - (byte*~) main::$12 ← (byte*) main::cursor#4 + (byte) 40 + (byte*~) main::$12 ← (byte*) main::cursor#4 + (byte/signed byte/word/signed word) 40 (byte*) main::cursor#2 ← (byte*~) main::$12 (byte~) main::$13 ← (byte) main::e#4 - (byte) main::xd#2 (byte) main::e#2 ← (byte~) main::$13 @@ -370,25 +370,25 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte) STAR#0 ← (byte) 81 - (byte[1000]) SCREEN#0 ← (word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) STAR#2 ← phi( @1/(byte) STAR#4 ) (byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#2 ) - (byte) main::x0#0 ← (byte) 4 - (byte) main::y0#0 ← (byte) 4 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::x0#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y0#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1#0 - (byte) main::x0#0 (byte) main::xd#0 ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1#0 - (byte) main::y0#0 (byte) main::yd#0 ← (byte~) main::$1 (byte) main::x#0 ← (byte) main::x0#0 (byte) main::y#0 ← (byte) main::y0#0 - (byte~) main::$2 ← (byte) main::yd#0 / (byte) 2 + (byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x#0 (byte*) main::cursor#0 ← (byte*~) main::$5 @@ -403,9 +403,9 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) (byte) STAR#1 ← phi( main/(byte) STAR#2 main::@2/(byte) STAR#3 ) *((byte*) main::cursor#3) ← (byte) STAR#1 - (byte~) main::$6 ← (byte) main::x#2 + (byte) 1 + (byte~) main::$6 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte~) main::$6 - (byte*~) main::$7 ← (byte*) main::cursor#3 + (byte) 1 + (byte*~) main::$7 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte*) main::cursor#1 ← (byte*~) main::$7 (byte~) main::$8 ← (byte) main::e#3 + (byte) main::yd#1 (byte) main::e#1 ← (byte~) main::$8 @@ -422,7 +422,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) STAR#3 ← phi( main::@1/(byte) STAR#1 main::@3/(byte) STAR#5 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 ) - (byte~) main::$14 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x#3 < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return @@ -435,9 +435,9 @@ main::@3: scope:[main] from main::@1 (byte) main::e#4 ← phi( main::@1/(byte) main::e#1 ) (byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#1 ) (byte) main::y#2 ← phi( main::@1/(byte) main::y#3 ) - (byte~) main::$11 ← (byte) main::y#2 + (byte) 1 + (byte~) main::$11 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 (byte) main::y#1 ← (byte~) main::$11 - (byte*~) main::$12 ← (byte*) main::cursor#4 + (byte) 40 + (byte*~) main::$12 ← (byte*) main::cursor#4 + (byte/signed byte/word/signed word) 40 (byte*) main::cursor#2 ← (byte*~) main::$12 (byte~) main::$13 ← (byte) main::e#4 - (byte) main::xd#2 (byte) main::e#2 ← (byte~) main::$13 @@ -543,25 +543,25 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte) STAR#0 ← (byte) 81 - (byte[1000]) SCREEN#0 ← (word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) STAR#2 ← phi( @1/(byte) STAR#4 ) (byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#2 ) - (byte) main::x0#0 ← (byte) 4 - (byte) main::y0#0 ← (byte) 4 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::x0#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y0#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1#0 - (byte) main::x0#0 (byte) main::xd#0 ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1#0 - (byte) main::y0#0 (byte) main::yd#0 ← (byte~) main::$1 (byte) main::x#0 ← (byte) main::x0#0 (byte) main::y#0 ← (byte) main::y0#0 - (byte~) main::$2 ← (byte) main::yd#0 / (byte) 2 + (byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x#0 (byte*) main::cursor#0 ← (byte*~) main::$5 @@ -576,9 +576,9 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) (byte) STAR#1 ← phi( main/(byte) STAR#2 main::@2/(byte) STAR#3 ) *((byte*) main::cursor#3) ← (byte) STAR#1 - (byte~) main::$6 ← (byte) main::x#2 + (byte) 1 + (byte~) main::$6 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte~) main::$6 - (byte*~) main::$7 ← (byte*) main::cursor#3 + (byte) 1 + (byte*~) main::$7 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte*) main::cursor#1 ← (byte*~) main::$7 (byte~) main::$8 ← (byte) main::e#3 + (byte) main::yd#1 (byte) main::e#1 ← (byte~) main::$8 @@ -595,7 +595,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) STAR#3 ← phi( main::@1/(byte) STAR#1 main::@3/(byte) STAR#5 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 ) - (byte~) main::$14 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x#3 < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return @@ -608,9 +608,9 @@ main::@3: scope:[main] from main::@1 (byte) main::e#4 ← phi( main::@1/(byte) main::e#1 ) (byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#1 ) (byte) main::y#2 ← phi( main::@1/(byte) main::y#3 ) - (byte~) main::$11 ← (byte) main::y#2 + (byte) 1 + (byte~) main::$11 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 (byte) main::y#1 ← (byte~) main::$11 - (byte*~) main::$12 ← (byte*) main::cursor#4 + (byte) 40 + (byte*~) main::$12 ← (byte*) main::cursor#4 + (byte/signed byte/word/signed word) 40 (byte*) main::cursor#2 ← (byte*~) main::$12 (byte~) main::$13 ← (byte) main::e#4 - (byte) main::xd#2 (byte) main::e#2 ← (byte~) main::$13 @@ -629,25 +629,25 @@ Inversing boolean not (boolean~) main::$10 ← (byte) main::xd#1 >= (byte) main: Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte) STAR#0 ← (byte) 81 - (byte[1000]) SCREEN#0 ← (word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) STAR#2 ← phi( @1/(byte) STAR#4 ) (byte[1000]) SCREEN#1 ← phi( @1/(byte[1000]) SCREEN#2 ) - (byte) main::x0#0 ← (byte) 4 - (byte) main::y0#0 ← (byte) 4 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::x0#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y0#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1#0 - (byte) main::x0#0 (byte) main::xd#0 ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1#0 - (byte) main::y0#0 (byte) main::yd#0 ← (byte~) main::$1 (byte) main::x#0 ← (byte) main::x0#0 (byte) main::y#0 ← (byte) main::y0#0 - (byte~) main::$2 ← (byte) main::yd#0 / (byte) 2 + (byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN#1 + (byte~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x#0 (byte*) main::cursor#0 ← (byte*~) main::$5 @@ -662,9 +662,9 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) (byte) STAR#1 ← phi( main/(byte) STAR#2 main::@2/(byte) STAR#3 ) *((byte*) main::cursor#3) ← (byte) STAR#1 - (byte~) main::$6 ← (byte) main::x#2 + (byte) 1 + (byte~) main::$6 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte~) main::$6 - (byte*~) main::$7 ← (byte*) main::cursor#3 + (byte) 1 + (byte*~) main::$7 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte*) main::cursor#1 ← (byte*~) main::$7 (byte~) main::$8 ← (byte) main::e#3 + (byte) main::yd#1 (byte) main::e#1 ← (byte~) main::$8 @@ -680,7 +680,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) STAR#3 ← phi( main::@1/(byte) STAR#1 main::@3/(byte) STAR#5 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 ) - (byte~) main::$14 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x#3 < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return @@ -693,9 +693,9 @@ main::@3: scope:[main] from main::@1 (byte) main::e#4 ← phi( main::@1/(byte) main::e#1 ) (byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#1 ) (byte) main::y#2 ← phi( main::@1/(byte) main::y#3 ) - (byte~) main::$11 ← (byte) main::y#2 + (byte) 1 + (byte~) main::$11 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 (byte) main::y#1 ← (byte~) main::$11 - (byte*~) main::$12 ← (byte*) main::cursor#4 + (byte) 40 + (byte*~) main::$12 ← (byte*) main::cursor#4 + (byte/signed byte/word/signed word) 40 (byte*) main::cursor#2 ← (byte*~) main::$12 (byte~) main::$13 ← (byte) main::e#4 - (byte) main::xd#2 (byte) main::e#2 ← (byte~) main::$13 @@ -732,18 +732,18 @@ Alias (byte) main::e#2 = (byte~) main::$13 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte) STAR#0 ← (byte) 81 - (byte[1000]) SCREEN#0 ← (word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::x#0 ← (byte) 4 - (byte) main::y#0 ← (byte) 4 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3 (byte*) main::cursor#0 ← (byte*~) main::$4 + (byte) main::x#0 to:main::@1 @@ -757,8 +757,8 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) (byte) STAR#1 ← phi( main/(byte) STAR#0 main::@2/(byte) STAR#3 ) *((byte*) main::cursor#3) ← (byte) STAR#1 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#1 (boolean~) main::$10 ← (byte) main::xd#1 >= (byte) main::e#1 if((boolean~) main::$10) goto main::@2 @@ -772,13 +772,13 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) STAR#3 ← phi( main::@1/(byte) STAR#1 main::@3/(byte) STAR#1 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#1 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#2 ) - (byte~) main::$14 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x#3 < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#1 to:main::@2 main::@return: scope:[main] from main::@2 @@ -797,18 +797,18 @@ Alias (byte) main::xd#1 = (byte) main::xd#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte) STAR#0 ← (byte) 81 - (byte[1000]) SCREEN#0 ← (word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::x#0 ← (byte) 4 - (byte) main::y#0 ← (byte) 4 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3 (byte*) main::cursor#0 ← (byte*~) main::$4 + (byte) main::x#0 to:main::@1 @@ -822,8 +822,8 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) (byte) STAR#1 ← phi( main/(byte) STAR#0 main::@2/(byte) STAR#1 ) *((byte*) main::cursor#3) ← (byte) STAR#1 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#1 (boolean~) main::$10 ← (byte) main::xd#1 >= (byte) main::e#1 if((boolean~) main::$10) goto main::@2 @@ -832,13 +832,13 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) - (byte~) main::$14 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x#1 < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#1 to:main::@2 main::@return: scope:[main] from main::@2 @@ -856,18 +856,18 @@ Self Phi Eliminated (byte) main::x1#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte) STAR#0 ← (byte) 81 - (byte[1000]) SCREEN#0 ← (word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::x#0 ← (byte) 4 - (byte) main::y#0 ← (byte) 4 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3 (byte*) main::cursor#0 ← (byte*~) main::$4 + (byte) main::x#0 to:main::@1 @@ -881,8 +881,8 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) (byte) STAR#1 ← phi( main/(byte) STAR#0 ) *((byte*) main::cursor#3) ← (byte) STAR#1 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#1 (boolean~) main::$10 ← (byte) main::xd#1 >= (byte) main::e#1 if((boolean~) main::$10) goto main::@2 @@ -891,13 +891,13 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) - (byte~) main::$14 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x#1 < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#1 to:main::@2 main::@return: scope:[main] from main::@2 @@ -915,18 +915,18 @@ Redundant Phi (byte) main::x1#1 (byte) main::x1#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte) STAR#0 ← (byte) 81 - (byte[1000]) SCREEN#0 ← (word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::x#0 ← (byte) 4 - (byte) main::y#0 ← (byte) 4 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3 (byte*) main::cursor#0 ← (byte*~) main::$4 + (byte) main::x#0 to:main::@1 @@ -936,8 +936,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#1 ) (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) *((byte*) main::cursor#3) ← (byte) STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#0 (boolean~) main::$10 ← (byte) main::xd#0 >= (byte) main::e#1 if((boolean~) main::$10) goto main::@2 @@ -946,13 +946,13 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) - (byte~) main::$14 ← (byte) main::x1#0 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1#0 + (byte/signed byte/word/signed word) 1 (boolean~) main::$15 ← (byte) main::x#1 < (byte~) main::$14 if((boolean~) main::$15) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -968,18 +968,18 @@ Simple Condition (boolean~) main::$15 if((byte) main::x#1<(byte~) main::$14) got Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte) STAR#0 ← (byte) 81 - (byte[1000]) SCREEN#0 ← (word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::x#0 ← (byte) 4 - (byte) main::y#0 ← (byte) 4 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 4 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte~) main::$3 (byte*) main::cursor#0 ← (byte*~) main::$4 + (byte) main::x#0 to:main::@1 @@ -989,8 +989,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#1 ) (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) *((byte*) main::cursor#3) ← (byte) STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#0 if((byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -998,12 +998,12 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) - (byte~) main::$14 ← (byte) main::x1#0 + (byte) 1 + (byte~) main::$14 ← (byte) main::x1#0 + (byte/signed byte/word/signed word) 1 if((byte) main::x#1<(byte~) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1027,8 +1027,8 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 (byte) main::xd#0 ← (const byte) main::x1#0 - (const byte) main::x#0 (byte) main::yd#0 ← (const byte) main::y1#0 - (const byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (const byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (const byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte*~) main::$4 ← (const byte[1000]) SCREEN#0 + (byte~) main::$3 (byte*) main::cursor#0 ← (byte*~) main::$4 + (const byte) main::x#0 to:main::@1 @@ -1038,8 +1038,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(const byte) main::x#0 main::@2/(byte) main::x#1 ) (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) *((byte*) main::cursor#3) ← (const byte) STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#0 if((byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -1047,12 +1047,12 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) - (byte~) main::$14 ← (const byte) main::x1#0 + (byte) 1 + (byte~) main::$14 ← (const byte) main::x1#0 + (byte/signed byte/word/signed word) 1 if((byte) main::x#1<(byte~) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1072,7 +1072,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::e#0 ← (const byte) main::yd#0 / (byte) 2 + (byte) main::e#0 ← (const byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte*~) main::$4 ← (const byte[1000]) SCREEN#0 + (const byte) main::$3 (byte*) main::cursor#0 ← (byte*~) main::$4 + (const byte) main::x#0 to:main::@1 @@ -1082,8 +1082,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(const byte) main::x#0 main::@2/(byte) main::x#1 ) (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) *((byte*) main::cursor#3) ← (const byte) STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -1094,8 +1094,8 @@ main::@2: scope:[main] from main::@1 main::@3 if((byte) main::x#1<(const byte) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1121,8 +1121,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(const byte) main::x#0 main::@2/(byte) main::x#1 ) (byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) *((byte*) main::cursor#3) ← (const byte) STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -1133,8 +1133,8 @@ main::@2: scope:[main] from main::@1 main::@3 if((byte) main::x#1<(const byte) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1158,8 +1158,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(const byte) main::x#0 main::@2/(byte) main::x#1 ) (byte*) main::cursor#3 ← phi( main/(const byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 ) *((byte*) main::cursor#3) ← (const byte) STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -1170,8 +1170,8 @@ main::@2: scope:[main] from main::@1 main::@3 if((byte) main::x#1<(const byte) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1199,13 +1199,13 @@ Inlining constant with var siblings (const byte*) main::cursor#0 Inlining constant with var siblings (const byte*) main::cursor#0 Inlining constant with var siblings (const byte*) main::cursor#0 Inlining constant with var siblings (const byte*) main::cursor#0 -Constant inlined main::$3 = (byte) 4*(byte) 40 -Constant inlined main::$4 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40 -Constant inlined main::x#0 = (byte) 4 -Constant inlined main::cursor#0 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -Constant inlined main::$14 = (const byte) main::x1#0+(byte) 1 -Constant inlined main::y#0 = (byte) 4 -Constant inlined main::e#0 = (const byte) main::yd#0/(byte) 2 +Constant inlined main::cursor#0 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 +Constant inlined main::$3 = (byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40 +Constant inlined main::$14 = (const byte) main::x1#0+(byte/signed byte/word/signed word) 1 +Constant inlined main::x#0 = (byte/signed byte/word/signed word) 4 +Constant inlined main::$4 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40 +Constant inlined main::y#0 = (byte/signed byte/word/signed word) 4 +Constant inlined main::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -1213,13 +1213,13 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::y#2 ← phi( main/(byte) 4 main::@2/(byte) main::y#4 ) - (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@2/(byte) main::e#5 ) - (byte) main::x#2 ← phi( main/(byte) 4 main::@2/(byte) main::x#1 ) - (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 main::@2/(byte*) main::cursor#5 ) + (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::y#4 ) + (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) + (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::x#1 ) + (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 main::@2/(byte*) main::cursor#5 ) *((byte*) main::cursor#3) ← (const byte) STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -1227,11 +1227,11 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) - if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 + if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1247,9 +1247,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 = (word) 1024 +(const byte[1000]) SCREEN#0 = (word/signed word) 1024 (byte) STAR -(const byte) STAR#0 = (byte) 81 +(const byte) STAR#0 = (byte/signed byte/word/signed word) 81 (void()) main() (label) main::@1 (label) main::@2 @@ -1270,18 +1270,18 @@ FINAL SYMBOL TABLE (byte) main::x#2 (byte) main::x0 (byte) main::x1 -(const byte) main::x1#0 = (byte) 39 +(const byte) main::x1#0 = (byte/signed byte/word/signed word) 39 (byte) main::xd -(const byte) main::xd#0 = (const byte) main::x1#0-(byte) 4 +(const byte) main::xd#0 = (const byte) main::x1#0-(byte/signed byte/word/signed word) 4 (byte) main::y (byte) main::y#1 (byte) main::y#2 (byte) main::y#4 (byte) main::y0 (byte) main::y1 -(const byte) main::y1#0 = (byte) 24 +(const byte) main::y1#0 = (byte/signed byte/word/signed word) 24 (byte) main::yd -(const byte) main::yd#0 = (const byte) main::y1#0-(byte) 4 +(const byte) main::yd#0 = (const byte) main::y1#0-(byte/signed byte/word/signed word) 4 Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return Added new block during phi lifting main::@5(between main::@2 and main::@1) @@ -1297,19 +1297,19 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::y#2 ← phi( main/(byte) 4 main::@5/(byte~) main::y#5 ) - (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@5/(byte~) main::e#6 ) - (byte) main::x#2 ← phi( main/(byte) 4 main::@5/(byte~) main::x#5 ) - (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 main::@5/(byte*~) main::cursor#6 ) + (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@5/(byte~) main::y#5 ) + (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@5/(byte~) main::e#6 ) + (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@5/(byte~) main::x#5 ) + (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 main::@5/(byte*~) main::cursor#6 ) *((byte*) main::cursor#3) ← (const byte) STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 if((const byte) main::xd#0>=(byte) main::e#1) goto main::@6 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 (byte*~) main::cursor#8 ← (byte*) main::cursor#2 (byte~) main::e#8 ← (byte) main::e#2 @@ -1319,7 +1319,7 @@ main::@2: scope:[main] from main::@3 main::@6 (byte) main::y#4 ← phi( main::@6/(byte~) main::y#6 main::@3/(byte~) main::y#7 ) (byte) main::e#5 ← phi( main::@6/(byte~) main::e#7 main::@3/(byte~) main::e#8 ) (byte*) main::cursor#5 ← phi( main::@6/(byte*~) main::cursor#7 main::@3/(byte*~) main::cursor#8 ) - if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@5 + if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@5 to:main::@return main::@return: scope:[main] from main::@2 return @@ -1359,19 +1359,19 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::y#2 ← phi( main/(byte) 4 main::@5/(byte~) main::y#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@5/(byte~) main::e#6 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte) main::x#2 ← phi( main/(byte) 4 main::@5/(byte~) main::x#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 main::@5/(byte*~) main::cursor#6 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@5/(byte~) main::y#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@5/(byte~) main::e#6 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@5/(byte~) main::x#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 main::@5/(byte*~) main::cursor#6 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] - [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] - [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] + [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] + [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@6 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] - [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] + [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] + [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] [11] (byte*~) main::cursor#8 ← (byte*) main::cursor#2 [ main::x#1 main::y#1 main::e#2 main::cursor#8 ] [12] (byte~) main::e#8 ← (byte) main::e#2 [ main::x#1 main::y#1 main::cursor#8 main::e#8 ] @@ -1381,7 +1381,7 @@ main::@2: scope:[main] from main::@3 main::@6 [14] (byte) main::y#4 ← phi( main::@6/(byte~) main::y#6 main::@3/(byte~) main::y#7 ) [ main::x#1 main::cursor#5 main::e#5 main::y#4 ] [14] (byte) main::e#5 ← phi( main::@6/(byte~) main::e#7 main::@3/(byte~) main::e#8 ) [ main::x#1 main::cursor#5 main::e#5 main::y#4 ] [14] (byte*) main::cursor#5 ← phi( main::@6/(byte*~) main::cursor#7 main::@3/(byte*~) main::cursor#8 ) [ main::x#1 main::cursor#5 main::e#5 main::y#4 ] - [15] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@5 [ main::x#1 main::cursor#5 main::e#5 main::y#4 ] + [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@5 [ main::x#1 main::cursor#5 main::e#5 main::y#4 ] to:main::@return main::@return: scope:[main] from main::@2 [16] return [ ] @@ -1432,26 +1432,26 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::y#2 ← phi( main/(byte) 4 main::@2/(byte) main::y#4 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@2/(byte) main::e#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte) main::x#2 ← phi( main/(byte) 4 main::@2/(byte) main::x#1 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 main::@2/(byte*) main::cursor#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::y#4 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::x#1 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 main::@2/(byte*) main::cursor#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] - [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] - [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] + [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] + [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] - [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] + [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] + [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [11] (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] [11] (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] [11] (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] - [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] + [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] to:main::@return main::@return: scope:[main] from main::@2 [13] return [ ] @@ -1468,26 +1468,26 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::y#2 ← phi( main/(byte) 4 main::@2/(byte) main::y#4 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@2/(byte) main::e#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte) main::x#2 ← phi( main/(byte) 4 main::@2/(byte) main::x#1 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 main::@2/(byte*) main::cursor#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::y#4 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::x#1 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte*) main::cursor#3 ← phi( main/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 main::@2/(byte*) main::cursor#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) - [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) - [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) + [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) + [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) - [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) + [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) + [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [11] (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) [11] (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) [11] (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) - [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) + [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) to:main::@return main::@return: scope:[main] from main::@2 [13] return [ ] ( main:0 [ ] ) @@ -1496,12 +1496,12 @@ main::@return: scope:[main] from main::@2 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@3 dominated by @1 @begin main::@1 main::@3 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main +main::@3 dominated by @1 @begin main::@1 main main::@3 +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main Found back edge: Loop head: main::@1 tails: main::@2 blocks: null Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 main::@3 @@ -1589,16 +1589,16 @@ main: { .label y = 6 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- zpby1=coby1 lda #yd/2 sta e - //SEG11 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- zpby1=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#2] -- zpby1=coby1 lda #4 sta x - //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 + //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 @@ -1617,9 +1617,9 @@ main: { ldy #0 lda #STAR sta (cursor),y - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 inc x - //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 + //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 inc cursor bne !+ inc cursor+1 @@ -1636,9 +1636,9 @@ main: { jmp b3 //SEG24 main::@3 b3: - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda cursor clc adc #$28 @@ -1660,7 +1660,7 @@ main: { jmp b2 //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 lda x cmp #x1+1 bcc b1_from_b2 @@ -1680,11 +1680,11 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ ma Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] Statement [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) always clobbers reg byte a -Statement [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) always clobbers reg byte a +Statement [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) always clobbers reg byte a Statement [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) always clobbers reg byte a Statement [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) always clobbers reg byte a reg byte y Statement [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ) always clobbers reg byte a -Statement [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) always clobbers reg byte a +Statement [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) always clobbers reg byte a Statement [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( main:0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ) always clobbers reg byte a Potential registers zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] : zp ZP_PTR_BYTE:2 , Potential registers zp ZP_BYTE:4 [ main::x#2 main::x#1 ] : zp ZP_BYTE:4 , reg byte x , @@ -1695,12 +1695,12 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 55: zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] 29.33: zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp ZP_BYTE:4 [ main::x#2 main::x#1 ] Uplift Scope [] -Uplifting [main] best 1195 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] zp ZP_BYTE:4 [ main::x#2 main::x#1 ] -Uplifting [] best 1195 combination +Uplifting [main] best 1225 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] zp ZP_BYTE:4 [ main::x#2 main::x#1 ] +Uplifting [] best 1225 combination Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] -Uplifting [main] best 1195 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] +Uplifting [main] best 1225 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::x#2 main::x#1 ] -Uplifting [main] best 1195 combination zp ZP_BYTE:4 [ main::x#2 main::x#1 ] +Uplifting [main] best 1225 combination zp ZP_BYTE:4 [ main::x#2 main::x#1 ] Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ] Removing instruction jmp b1 Removing instruction jmp bend @@ -1738,15 +1738,15 @@ main: { .label y = 5 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- xby=coby1 ldx #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- zpby1=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#2] -- zpby1=coby1 lda #4 sta x - //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 + //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 @@ -1764,9 +1764,9 @@ main: { ldy #0 lda #STAR sta (cursor),y - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 inc x - //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 + //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 inc cursor bne !+ inc cursor+1 @@ -1781,9 +1781,9 @@ main: { bcc b2_from_b1 //SEG24 main::@3 b3: - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda cursor clc adc #$28 @@ -1804,7 +1804,7 @@ main: { //SEG31 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 lda x cmp #x1+1 bcc b1_from_b2 @@ -1845,14 +1845,14 @@ main: { .label y = 5 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- xby=coby1 ldx #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- zpby1=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#2] -- zpby1=coby1 sta x - //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 + //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 @@ -1870,9 +1870,9 @@ main: { ldy #0 lda #STAR sta (cursor),y - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 inc x - //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 + //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 inc cursor bne !+ inc cursor+1 @@ -1887,9 +1887,9 @@ main: { bcc b2_from_b1 //SEG24 main::@3 b3: - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda cursor clc adc #$28 @@ -1910,7 +1910,7 @@ main: { //SEG31 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 lda x cmp #x1+1 bcc b1_from_b2 @@ -1955,14 +1955,14 @@ main: { .label y = 5 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- xby=coby1 ldx #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- zpby1=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#2] -- zpby1=coby1 sta x - //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 + //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 @@ -1979,9 +1979,9 @@ main: { ldy #0 lda #STAR sta (cursor),y - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 inc x - //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 + //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 inc cursor bne !+ inc cursor+1 @@ -1996,9 +1996,9 @@ main: { bcc b2 //SEG24 main::@3 b3: - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda cursor clc adc #$28 @@ -2017,7 +2017,7 @@ main: { //SEG31 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 lda x cmp #x1+1 bcc b1 @@ -2057,14 +2057,14 @@ main: { .label cursor = 2 .label y = 5 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- xby=coby1 ldx #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- zpby1=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#2] -- zpby1=coby1 sta x - //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 + //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 @@ -2081,9 +2081,9 @@ main: { ldy #0 lda #STAR sta (cursor),y - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 inc x - //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 + //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 inc cursor bne !+ inc cursor+1 @@ -2097,9 +2097,9 @@ main: { cpx #xd bcc b2 //SEG24 main::@3 - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda cursor clc adc #$28 @@ -2118,7 +2118,7 @@ main: { //SEG31 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 lda x cmp #x1+1 bcc b1 @@ -2153,14 +2153,14 @@ main: { .label cursor = 2 .label y = 5 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- xby=coby1 ldx #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- zpby1=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#2] -- zpby1=coby1 sta x - //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 + //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 @@ -2176,9 +2176,9 @@ main: { ldy #0 lda #STAR sta (cursor),y - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 inc x - //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 + //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 inc cursor bne !+ inc cursor+1 @@ -2192,9 +2192,9 @@ main: { cpx #xd bcc b2 //SEG24 main::@3 - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda cursor clc adc #$28 @@ -2213,7 +2213,7 @@ main: { //SEG31 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 lda x cmp #x1+1 bcc b1 @@ -2227,9 +2227,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 SCREEN = (word) 1024 +(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) STAR -(const byte) STAR#0 STAR = (byte) 81 +(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (void()) main() (label) main::@1 (label) main::@2 @@ -2250,18 +2250,18 @@ FINAL SYMBOL TABLE (byte) main::x#2 x zp ZP_BYTE:4 11.0 (byte) main::x0 (byte) main::x1 -(const byte) main::x1#0 x1 = (byte) 39 +(const byte) main::x1#0 x1 = (byte/signed byte/word/signed word) 39 (byte) main::xd -(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte) 4 +(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte/signed byte/word/signed word) 4 (byte) main::y (byte) main::y#1 y zp ZP_BYTE:5 7.333333333333333 (byte) main::y#2 y zp ZP_BYTE:5 5.5 (byte) main::y#4 y zp ZP_BYTE:5 16.5 (byte) main::y0 (byte) main::y1 -(const byte) main::y1#0 y1 = (byte) 24 +(const byte) main::y1#0 y1 = (byte/signed byte/word/signed word) 24 (byte) main::yd -(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte) 4 +(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte/signed byte/word/signed word) 4 zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:4 [ main::x#2 main::x#1 ] @@ -2292,14 +2292,14 @@ main: { .label cursor = 2 .label y = 5 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- xby=coby1 ldx #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- zpby1=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 4 [phi:main->main::@1#2] -- zpby1=coby1 sta x - //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 + //SEG12 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 4*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 @@ -2315,9 +2315,9 @@ main: { ldy #0 lda #STAR sta (cursor),y - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 inc x - //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 + //SEG21 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] ) -- zpptrby1=zpptrby1_plus_1 inc cursor bne !+ inc cursor+1 @@ -2331,9 +2331,9 @@ main: { cpx #xd bcc b2 //SEG24 main::@3 - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG26 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda cursor clc adc #$28 @@ -2352,7 +2352,7 @@ main: { //SEG31 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 lda x cmp #x1+1 bcc b1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.sym b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.sym index 9d23de3e0..57cf77a0c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.sym @@ -2,9 +2,9 @@ (label) @begin (label) @end (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 SCREEN = (word) 1024 +(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) STAR -(const byte) STAR#0 STAR = (byte) 81 +(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (void()) main() (label) main::@1 (label) main::@2 @@ -25,18 +25,18 @@ (byte) main::x#2 x zp ZP_BYTE:4 11.0 (byte) main::x0 (byte) main::x1 -(const byte) main::x1#0 x1 = (byte) 39 +(const byte) main::x1#0 x1 = (byte/signed byte/word/signed word) 39 (byte) main::xd -(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte) 4 +(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte/signed byte/word/signed word) 4 (byte) main::y (byte) main::y#1 y zp ZP_BYTE:5 7.333333333333333 (byte) main::y#2 y zp ZP_BYTE:5 5.5 (byte) main::y#4 y zp ZP_BYTE:5 16.5 (byte) main::y0 (byte) main::y1 -(const byte) main::y1#0 y1 = (byte) 24 +(const byte) main::y1#0 y1 = (byte/signed byte/word/signed word) 24 (byte) main::yd -(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte) 4 +(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte/signed byte/word/signed word) 4 zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:4 [ main::x#2 main::x#1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.cfg b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.cfg index 28dac36f4..dc42f145c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.cfg @@ -8,26 +8,26 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::y#2 ← phi( main/(byte) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte) main::x#2 ← phi( main/(byte) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (word) main::idx#3 ← phi( main/(byte) 0+(byte) 0*(byte) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) - [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) - [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) + [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) + [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ) [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ) to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) - [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) + [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) + [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [11] (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) [11] (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) [11] (word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 ) [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) - [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) + [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) to:main::@return main::@return: scope:[main] from main::@2 [13] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.log b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.log index fa01820dc..e760984b7 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.log @@ -26,42 +26,42 @@ void main() { } PROGRAM proc (void()) main() - (byte) main::STAR ← (byte) 81 - (byte[1000]) main::screen ← (word) 1024 - (byte) main::x0 ← (byte) 0 - (byte) main::y0 ← (byte) 0 - (byte) main::x1 ← (byte) 39 - (byte) main::y1 ← (byte) 24 + (byte) main::STAR ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen ← (word/signed word) 1024 + (byte) main::x0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1 - (byte) main::x0 (byte) main::xd ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1 - (byte) main::y0 (byte) main::yd ← (byte~) main::$1 (byte) main::x ← (byte) main::x0 (byte) main::y ← (byte) main::y0 - (byte~) main::$2 ← (byte) main::yd / (byte) 2 + (byte~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word) 2 (byte) main::e ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y * (byte) 40 + (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte~) main::$4 ← (byte) main::x + (byte~) main::$3 (word) main::idx ← (byte~) main::$4 main::@1: *((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR - (byte~) main::$5 ← (byte) main::x + (byte) 1 + (byte~) main::$5 ← (byte) main::x + (byte/signed byte/word/signed word) 1 (byte) main::x ← (byte~) main::$5 - (word~) main::$6 ← (word) main::idx + (byte) 1 + (word~) main::$6 ← (word) main::idx + (byte/signed byte/word/signed word) 1 (word) main::idx ← (word~) main::$6 (byte~) main::$7 ← (byte) main::e + (byte) main::yd (byte) main::e ← (byte~) main::$7 (boolean~) main::$8 ← (byte) main::xd < (byte) main::e (boolean~) main::$9 ← ! (boolean~) main::$8 if((boolean~) main::$9) goto main::@2 - (byte~) main::$10 ← (byte) main::y + (byte) 1 + (byte~) main::$10 ← (byte) main::y + (byte/signed byte/word/signed word) 1 (byte) main::y ← (byte~) main::$10 - (word~) main::$11 ← (word) main::idx + (byte) 40 + (word~) main::$11 ← (word) main::idx + (byte/signed byte/word/signed word) 40 (word) main::idx ← (word~) main::$11 (byte~) main::$12 ← (byte) main::e - (byte) main::xd (byte) main::e ← (byte~) main::$12 main::@2: - (byte~) main::$13 ← (byte) main::x1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 main::@return: @@ -106,29 +106,29 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte) main::STAR ← (byte) 81 - (byte[1000]) main::screen ← (word) 1024 - (byte) main::x0 ← (byte) 0 - (byte) main::y0 ← (byte) 0 - (byte) main::x1 ← (byte) 39 - (byte) main::y1 ← (byte) 24 + (byte) main::STAR ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen ← (word/signed word) 1024 + (byte) main::x0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1 - (byte) main::x0 (byte) main::xd ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1 - (byte) main::y0 (byte) main::yd ← (byte~) main::$1 (byte) main::x ← (byte) main::x0 (byte) main::y ← (byte) main::y0 - (byte~) main::$2 ← (byte) main::yd / (byte) 2 + (byte~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word) 2 (byte) main::e ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y * (byte) 40 + (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte~) main::$4 ← (byte) main::x + (byte~) main::$3 (word) main::idx ← (byte~) main::$4 to:main::@1 main::@1: scope:[main] from main main::@2 *((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR - (byte~) main::$5 ← (byte) main::x + (byte) 1 + (byte~) main::$5 ← (byte) main::x + (byte/signed byte/word/signed word) 1 (byte) main::x ← (byte~) main::$5 - (word~) main::$6 ← (word) main::idx + (byte) 1 + (word~) main::$6 ← (word) main::idx + (byte/signed byte/word/signed word) 1 (word) main::idx ← (word~) main::$6 (byte~) main::$7 ← (byte) main::e + (byte) main::yd (byte) main::e ← (byte~) main::$7 @@ -137,14 +137,14 @@ main::@1: scope:[main] from main main::@2 if((boolean~) main::$9) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 - (byte~) main::$13 ← (byte) main::x1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 - (byte~) main::$10 ← (byte) main::y + (byte) 1 + (byte~) main::$10 ← (byte) main::y + (byte/signed byte/word/signed word) 1 (byte) main::y ← (byte~) main::$10 - (word~) main::$11 ← (word) main::idx + (byte) 40 + (word~) main::$11 ← (word) main::idx + (byte/signed byte/word/signed word) 40 (word) main::idx ← (word~) main::$11 (byte~) main::$12 ← (byte) main::e - (byte) main::xd (byte) main::e ← (byte~) main::$12 @@ -164,29 +164,29 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte) main::STAR ← (byte) 81 - (byte[1000]) main::screen ← (word) 1024 - (byte) main::x0 ← (byte) 0 - (byte) main::y0 ← (byte) 0 - (byte) main::x1 ← (byte) 39 - (byte) main::y1 ← (byte) 24 + (byte) main::STAR ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen ← (word/signed word) 1024 + (byte) main::x0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1 - (byte) main::x0 (byte) main::xd ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1 - (byte) main::y0 (byte) main::yd ← (byte~) main::$1 (byte) main::x ← (byte) main::x0 (byte) main::y ← (byte) main::y0 - (byte~) main::$2 ← (byte) main::yd / (byte) 2 + (byte~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word) 2 (byte) main::e ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y * (byte) 40 + (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte~) main::$4 ← (byte) main::x + (byte~) main::$3 (word) main::idx ← (byte~) main::$4 to:main::@1 main::@1: scope:[main] from main main::@2 *((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR - (byte~) main::$5 ← (byte) main::x + (byte) 1 + (byte~) main::$5 ← (byte) main::x + (byte/signed byte/word/signed word) 1 (byte) main::x ← (byte~) main::$5 - (word~) main::$6 ← (word) main::idx + (byte) 1 + (word~) main::$6 ← (word) main::idx + (byte/signed byte/word/signed word) 1 (word) main::idx ← (word~) main::$6 (byte~) main::$7 ← (byte) main::e + (byte) main::yd (byte) main::e ← (byte~) main::$7 @@ -195,14 +195,14 @@ main::@1: scope:[main] from main main::@2 if((boolean~) main::$9) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 - (byte~) main::$13 ← (byte) main::x1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte~) main::$10 ← (byte) main::y + (byte) 1 + (byte~) main::$10 ← (byte) main::y + (byte/signed byte/word/signed word) 1 (byte) main::y ← (byte~) main::$10 - (word~) main::$11 ← (word) main::idx + (byte) 40 + (word~) main::$11 ← (word) main::idx + (byte/signed byte/word/signed word) 40 (word) main::idx ← (word~) main::$11 (byte~) main::$12 ← (byte) main::e - (byte) main::xd (byte) main::e ← (byte~) main::$12 @@ -221,29 +221,29 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR ← (byte) 81 - (byte[1000]) main::screen ← (word) 1024 - (byte) main::x0 ← (byte) 0 - (byte) main::y0 ← (byte) 0 - (byte) main::x1 ← (byte) 39 - (byte) main::y1 ← (byte) 24 + (byte) main::STAR ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen ← (word/signed word) 1024 + (byte) main::x0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1 - (byte) main::x0 (byte) main::xd ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1 - (byte) main::y0 (byte) main::yd ← (byte~) main::$1 (byte) main::x ← (byte) main::x0 (byte) main::y ← (byte) main::y0 - (byte~) main::$2 ← (byte) main::yd / (byte) 2 + (byte~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word) 2 (byte) main::e ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y * (byte) 40 + (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte~) main::$4 ← (byte) main::x + (byte~) main::$3 (word) main::idx ← (byte~) main::$4 to:main::@1 main::@1: scope:[main] from main main::@2 *((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR - (byte~) main::$5 ← (byte) main::x + (byte) 1 + (byte~) main::$5 ← (byte) main::x + (byte/signed byte/word/signed word) 1 (byte) main::x ← (byte~) main::$5 - (word~) main::$6 ← (word) main::idx + (byte) 1 + (word~) main::$6 ← (word) main::idx + (byte/signed byte/word/signed word) 1 (word) main::idx ← (word~) main::$6 (byte~) main::$7 ← (byte) main::e + (byte) main::yd (byte) main::e ← (byte~) main::$7 @@ -252,14 +252,14 @@ main::@1: scope:[main] from main main::@2 if((boolean~) main::$9) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 - (byte~) main::$13 ← (byte) main::x1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte~) main::$10 ← (byte) main::y + (byte) 1 + (byte~) main::$10 ← (byte) main::y + (byte/signed byte/word/signed word) 1 (byte) main::y ← (byte~) main::$10 - (word~) main::$11 ← (word) main::idx + (byte) 40 + (word~) main::$11 ← (word) main::idx + (byte/signed byte/word/signed word) 40 (word) main::idx ← (word~) main::$11 (byte~) main::$12 ← (byte) main::e - (byte) main::xd (byte) main::e ← (byte~) main::$12 @@ -281,21 +281,21 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR#0 ← (byte) 81 - (byte[1000]) main::screen#0 ← (word) 1024 - (byte) main::x0#0 ← (byte) 0 - (byte) main::y0#0 ← (byte) 0 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen#0 ← (word/signed word) 1024 + (byte) main::x0#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y0#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1#0 - (byte) main::x0#0 (byte) main::xd#0 ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1#0 - (byte) main::y0#0 (byte) main::yd#0 ← (byte~) main::$1 (byte) main::x#0 ← (byte) main::x0#0 (byte) main::y#0 ← (byte) main::y0#0 - (byte~) main::$2 ← (byte) main::yd#0 / (byte) 2 + (byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3 (word) main::idx#0 ← (byte~) main::$4 to:main::@1 @@ -310,9 +310,9 @@ main::@1: scope:[main] from main main::@2 (byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 ) (byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 ) *((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1 - (byte~) main::$5 ← (byte) main::x#2 + (byte) 1 + (byte~) main::$5 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte~) main::$5 - (word~) main::$6 ← (word) main::idx#3 + (byte) 1 + (word~) main::$6 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (word) main::idx#1 ← (word~) main::$6 (byte~) main::$7 ← (byte) main::e#3 + (byte) main::yd#1 (byte) main::e#1 ← (byte~) main::$7 @@ -330,7 +330,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 ) - (byte~) main::$13 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x#3 < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return @@ -344,9 +344,9 @@ main::@3: scope:[main] from main::@1 (byte) main::e#4 ← phi( main::@1/(byte) main::e#1 ) (word) main::idx#4 ← phi( main::@1/(word) main::idx#1 ) (byte) main::y#2 ← phi( main::@1/(byte) main::y#3 ) - (byte~) main::$10 ← (byte) main::y#2 + (byte) 1 + (byte~) main::$10 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 (byte) main::y#1 ← (byte~) main::$10 - (word~) main::$11 ← (word) main::idx#4 + (byte) 40 + (word~) main::$11 ← (word) main::idx#4 + (byte/signed byte/word/signed word) 40 (word) main::idx#2 ← (word~) main::$11 (byte~) main::$12 ← (byte) main::e#4 - (byte) main::xd#2 (byte) main::e#2 ← (byte~) main::$12 @@ -365,21 +365,21 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR#0 ← (byte) 81 - (byte[1000]) main::screen#0 ← (word) 1024 - (byte) main::x0#0 ← (byte) 0 - (byte) main::y0#0 ← (byte) 0 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen#0 ← (word/signed word) 1024 + (byte) main::x0#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y0#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1#0 - (byte) main::x0#0 (byte) main::xd#0 ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1#0 - (byte) main::y0#0 (byte) main::yd#0 ← (byte~) main::$1 (byte) main::x#0 ← (byte) main::x0#0 (byte) main::y#0 ← (byte) main::y0#0 - (byte~) main::$2 ← (byte) main::yd#0 / (byte) 2 + (byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3 (word) main::idx#0 ← (byte~) main::$4 to:main::@1 @@ -394,9 +394,9 @@ main::@1: scope:[main] from main main::@2 (byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 ) (byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 ) *((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1 - (byte~) main::$5 ← (byte) main::x#2 + (byte) 1 + (byte~) main::$5 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte~) main::$5 - (word~) main::$6 ← (word) main::idx#3 + (byte) 1 + (word~) main::$6 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (word) main::idx#1 ← (word~) main::$6 (byte~) main::$7 ← (byte) main::e#3 + (byte) main::yd#1 (byte) main::e#1 ← (byte~) main::$7 @@ -414,7 +414,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 ) - (byte~) main::$13 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x#3 < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return @@ -428,9 +428,9 @@ main::@3: scope:[main] from main::@1 (byte) main::e#4 ← phi( main::@1/(byte) main::e#1 ) (word) main::idx#4 ← phi( main::@1/(word) main::idx#1 ) (byte) main::y#2 ← phi( main::@1/(byte) main::y#3 ) - (byte~) main::$10 ← (byte) main::y#2 + (byte) 1 + (byte~) main::$10 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 (byte) main::y#1 ← (byte~) main::$10 - (word~) main::$11 ← (word) main::idx#4 + (byte) 40 + (word~) main::$11 ← (word) main::idx#4 + (byte/signed byte/word/signed word) 40 (word) main::idx#2 ← (word~) main::$11 (byte~) main::$12 ← (byte) main::e#4 - (byte) main::xd#2 (byte) main::e#2 ← (byte~) main::$12 @@ -534,21 +534,21 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR#0 ← (byte) 81 - (byte[1000]) main::screen#0 ← (word) 1024 - (byte) main::x0#0 ← (byte) 0 - (byte) main::y0#0 ← (byte) 0 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen#0 ← (word/signed word) 1024 + (byte) main::x0#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y0#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1#0 - (byte) main::x0#0 (byte) main::xd#0 ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1#0 - (byte) main::y0#0 (byte) main::yd#0 ← (byte~) main::$1 (byte) main::x#0 ← (byte) main::x0#0 (byte) main::y#0 ← (byte) main::y0#0 - (byte~) main::$2 ← (byte) main::yd#0 / (byte) 2 + (byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3 (word) main::idx#0 ← (byte~) main::$4 to:main::@1 @@ -563,9 +563,9 @@ main::@1: scope:[main] from main main::@2 (byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 ) (byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 ) *((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1 - (byte~) main::$5 ← (byte) main::x#2 + (byte) 1 + (byte~) main::$5 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte~) main::$5 - (word~) main::$6 ← (word) main::idx#3 + (byte) 1 + (word~) main::$6 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (word) main::idx#1 ← (word~) main::$6 (byte~) main::$7 ← (byte) main::e#3 + (byte) main::yd#1 (byte) main::e#1 ← (byte~) main::$7 @@ -583,7 +583,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 ) - (byte~) main::$13 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x#3 < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return @@ -597,9 +597,9 @@ main::@3: scope:[main] from main::@1 (byte) main::e#4 ← phi( main::@1/(byte) main::e#1 ) (word) main::idx#4 ← phi( main::@1/(word) main::idx#1 ) (byte) main::y#2 ← phi( main::@1/(byte) main::y#3 ) - (byte~) main::$10 ← (byte) main::y#2 + (byte) 1 + (byte~) main::$10 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 (byte) main::y#1 ← (byte~) main::$10 - (word~) main::$11 ← (word) main::idx#4 + (byte) 40 + (word~) main::$11 ← (word) main::idx#4 + (byte/signed byte/word/signed word) 40 (word) main::idx#2 ← (word~) main::$11 (byte~) main::$12 ← (byte) main::e#4 - (byte) main::xd#2 (byte) main::e#2 ← (byte~) main::$12 @@ -618,21 +618,21 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR#0 ← (byte) 81 - (byte[1000]) main::screen#0 ← (word) 1024 - (byte) main::x0#0 ← (byte) 0 - (byte) main::y0#0 ← (byte) 0 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen#0 ← (word/signed word) 1024 + (byte) main::x0#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y0#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte~) main::$0 ← (byte) main::x1#0 - (byte) main::x0#0 (byte) main::xd#0 ← (byte~) main::$0 (byte~) main::$1 ← (byte) main::y1#0 - (byte) main::y0#0 (byte) main::yd#0 ← (byte~) main::$1 (byte) main::x#0 ← (byte) main::x0#0 (byte) main::y#0 ← (byte) main::y0#0 - (byte~) main::$2 ← (byte) main::yd#0 / (byte) 2 + (byte~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3 (word) main::idx#0 ← (byte~) main::$4 to:main::@1 @@ -647,9 +647,9 @@ main::@1: scope:[main] from main main::@2 (byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 ) (byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 ) *((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1 - (byte~) main::$5 ← (byte) main::x#2 + (byte) 1 + (byte~) main::$5 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte~) main::$5 - (word~) main::$6 ← (word) main::idx#3 + (byte) 1 + (word~) main::$6 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (word) main::idx#1 ← (word~) main::$6 (byte~) main::$7 ← (byte) main::e#3 + (byte) main::yd#1 (byte) main::e#1 ← (byte~) main::$7 @@ -666,7 +666,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 ) - (byte~) main::$13 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x#3 < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return @@ -680,9 +680,9 @@ main::@3: scope:[main] from main::@1 (byte) main::e#4 ← phi( main::@1/(byte) main::e#1 ) (word) main::idx#4 ← phi( main::@1/(word) main::idx#1 ) (byte) main::y#2 ← phi( main::@1/(byte) main::y#3 ) - (byte~) main::$10 ← (byte) main::y#2 + (byte) 1 + (byte~) main::$10 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 (byte) main::y#1 ← (byte~) main::$10 - (word~) main::$11 ← (word) main::idx#4 + (byte) 40 + (word~) main::$11 ← (word) main::idx#4 + (byte/signed byte/word/signed word) 40 (word) main::idx#2 ← (word~) main::$11 (byte~) main::$12 ← (byte) main::e#4 - (byte) main::xd#2 (byte) main::e#2 ← (byte~) main::$12 @@ -718,16 +718,16 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR#0 ← (byte) 81 - (byte[1000]) main::screen#0 ← (word) 1024 - (byte) main::x#0 ← (byte) 0 - (byte) main::y#0 ← (byte) 0 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen#0 ← (word/signed word) 1024 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 to:main::@1 main::@1: scope:[main] from main main::@2 @@ -741,8 +741,8 @@ main::@1: scope:[main] from main main::@2 (byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#2 ) (byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 ) *((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#1 (boolean~) main::$9 ← (byte) main::xd#1 >= (byte) main::e#1 if((boolean~) main::$9) goto main::@2 @@ -757,13 +757,13 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#1 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#1 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#2 ) - (byte~) main::$13 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x#3 < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#1 to:main::@2 main::@return: scope:[main] from main::@2 @@ -785,16 +785,16 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR#0 ← (byte) 81 - (byte[1000]) main::screen#0 ← (word) 1024 - (byte) main::x#0 ← (byte) 0 - (byte) main::y#0 ← (byte) 0 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen#0 ← (word/signed word) 1024 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 to:main::@1 main::@1: scope:[main] from main main::@2 @@ -808,8 +808,8 @@ main::@1: scope:[main] from main main::@2 (byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 main::@2/(byte[1000]) main::screen#1 ) (byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#1 ) *((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#1 (boolean~) main::$9 ← (byte) main::xd#1 >= (byte) main::e#1 if((boolean~) main::$9) goto main::@2 @@ -818,13 +818,13 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 ) - (byte~) main::$13 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x#1 < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#1 to:main::@2 main::@return: scope:[main] from main::@2 @@ -845,16 +845,16 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR#0 ← (byte) 81 - (byte[1000]) main::screen#0 ← (word) 1024 - (byte) main::x#0 ← (byte) 0 - (byte) main::y#0 ← (byte) 0 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen#0 ← (word/signed word) 1024 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 to:main::@1 main::@1: scope:[main] from main main::@2 @@ -868,8 +868,8 @@ main::@1: scope:[main] from main main::@2 (byte[1000]) main::screen#1 ← phi( main/(byte[1000]) main::screen#0 ) (byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 ) *((byte[1000]) main::screen#1 + (word) main::idx#3) ← (byte) main::STAR#1 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#1 (boolean~) main::$9 ← (byte) main::xd#1 >= (byte) main::e#1 if((boolean~) main::$9) goto main::@2 @@ -878,13 +878,13 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 ) - (byte~) main::$13 ← (byte) main::x1#1 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1#1 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x#1 < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#1 to:main::@2 main::@return: scope:[main] from main::@2 @@ -905,16 +905,16 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR#0 ← (byte) 81 - (byte[1000]) main::screen#0 ← (word) 1024 - (byte) main::x#0 ← (byte) 0 - (byte) main::y#0 ← (byte) 0 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen#0 ← (word/signed word) 1024 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 to:main::@1 main::@1: scope:[main] from main main::@2 @@ -923,8 +923,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#1 ) (word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 ) *((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#0 (boolean~) main::$9 ← (byte) main::xd#0 >= (byte) main::e#1 if((boolean~) main::$9) goto main::@2 @@ -933,13 +933,13 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 ) - (byte~) main::$13 ← (byte) main::x1#0 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1#0 + (byte/signed byte/word/signed word) 1 (boolean~) main::$14 ← (byte) main::x#1 < (byte~) main::$13 if((boolean~) main::$14) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -957,16 +957,16 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::STAR#0 ← (byte) 81 - (byte[1000]) main::screen#0 ← (word) 1024 - (byte) main::x#0 ← (byte) 0 - (byte) main::y#0 ← (byte) 0 - (byte) main::x1#0 ← (byte) 39 - (byte) main::y1#0 ← (byte) 24 + (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 + (byte[1000]) main::screen#0 ← (word/signed word) 1024 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 + (byte) main::y1#0 ← (byte/signed byte/word/signed word) 24 (byte) main::xd#0 ← (byte) main::x1#0 - (byte) main::x#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 to:main::@1 main::@1: scope:[main] from main main::@2 @@ -975,8 +975,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#1 ) (word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 ) *((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#0 if((byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -984,12 +984,12 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 ) - (byte~) main::$13 ← (byte) main::x1#0 + (byte) 1 + (byte~) main::$13 ← (byte) main::x1#0 + (byte/signed byte/word/signed word) 1 if((byte) main::x#1<(byte~) main::$13) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1013,8 +1013,8 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 (byte) main::xd#0 ← (const byte) main::x1#0 - (const byte) main::x#0 (byte) main::yd#0 ← (const byte) main::y1#0 - (const byte) main::y#0 - (byte) main::e#0 ← (byte) main::yd#0 / (byte) 2 - (byte~) main::$3 ← (const byte) main::y#0 * (byte) 40 + (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 + (byte~) main::$3 ← (const byte) main::y#0 * (byte/signed byte/word/signed word) 40 (word) main::idx#0 ← (const byte) main::x#0 + (byte~) main::$3 to:main::@1 main::@1: scope:[main] from main main::@2 @@ -1023,8 +1023,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(const byte) main::x#0 main::@2/(byte) main::x#1 ) (word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 ) *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (byte) main::yd#0 if((byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -1032,12 +1032,12 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 ) - (byte~) main::$13 ← (const byte) main::x1#0 + (byte) 1 + (byte~) main::$13 ← (const byte) main::x1#0 + (byte/signed byte/word/signed word) 1 if((byte) main::x#1<(byte~) main::$13) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1057,7 +1057,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::e#0 ← (const byte) main::yd#0 / (byte) 2 + (byte) main::e#0 ← (const byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (word) main::idx#0 ← (const byte) main::x#0 + (const byte) main::$3 to:main::@1 main::@1: scope:[main] from main main::@2 @@ -1066,8 +1066,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(const byte) main::x#0 main::@2/(byte) main::x#1 ) (word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 ) *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -1078,8 +1078,8 @@ main::@2: scope:[main] from main::@1 main::@3 if((byte) main::x#1<(const byte) main::$13) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1104,8 +1104,8 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(const byte) main::x#0 main::@2/(byte) main::x#1 ) (word) main::idx#3 ← phi( main/(const word) main::idx#0 main::@2/(word) main::idx#5 ) *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -1116,8 +1116,8 @@ main::@2: scope:[main] from main::@1 main::@3 if((byte) main::x#1<(const byte) main::$13) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1145,12 +1145,12 @@ Inlining constant with var siblings (const word) main::idx#0 Inlining constant with var siblings (const word) main::idx#0 Inlining constant with var siblings (const word) main::idx#0 Inlining constant with var siblings (const word) main::idx#0 -Constant inlined main::$3 = (byte) 0*(byte) 40 -Constant inlined main::x#0 = (byte) 0 -Constant inlined main::idx#0 = (byte) 0+(byte) 0*(byte) 40 -Constant inlined main::y#0 = (byte) 0 -Constant inlined main::e#0 = (const byte) main::yd#0/(byte) 2 -Constant inlined main::$13 = (const byte) main::x1#0+(byte) 1 +Constant inlined main::$13 = (const byte) main::x1#0+(byte/signed byte/word/signed word) 1 +Constant inlined main::idx#0 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 +Constant inlined main::$3 = (byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 +Constant inlined main::x#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::y#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -1158,13 +1158,13 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::y#2 ← phi( main/(byte) 0 main::@2/(byte) main::y#4 ) - (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@2/(byte) main::e#5 ) - (byte) main::x#2 ← phi( main/(byte) 0 main::@2/(byte) main::x#1 ) - (word) main::idx#3 ← phi( main/(byte) 0+(byte) 0*(byte) 40 main::@2/(word) main::idx#5 ) + (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) + (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) + (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) + (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 to:main::@3 @@ -1172,11 +1172,11 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) (word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 ) - if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 + if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 to:main::@2 main::@return: scope:[main] from main::@2 @@ -1197,7 +1197,7 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::STAR -(const byte) main::STAR#0 = (byte) 81 +(const byte) main::STAR#0 = (byte/signed byte/word/signed word) 81 (byte) main::e (byte) main::e#1 (byte) main::e#2 @@ -1209,24 +1209,24 @@ FINAL SYMBOL TABLE (word) main::idx#3 (word) main::idx#5 (byte[1000]) main::screen -(const byte[1000]) main::screen#0 = (word) 1024 +(const byte[1000]) main::screen#0 = (word/signed word) 1024 (byte) main::x (byte) main::x#1 (byte) main::x#2 (byte) main::x0 (byte) main::x1 -(const byte) main::x1#0 = (byte) 39 +(const byte) main::x1#0 = (byte/signed byte/word/signed word) 39 (byte) main::xd -(const byte) main::xd#0 = (const byte) main::x1#0-(byte) 0 +(const byte) main::xd#0 = (const byte) main::x1#0-(byte/signed byte/word/signed word) 0 (byte) main::y (byte) main::y#1 (byte) main::y#2 (byte) main::y#4 (byte) main::y0 (byte) main::y1 -(const byte) main::y1#0 = (byte) 24 +(const byte) main::y1#0 = (byte/signed byte/word/signed word) 24 (byte) main::yd -(const byte) main::yd#0 = (const byte) main::y1#0-(byte) 0 +(const byte) main::yd#0 = (const byte) main::y1#0-(byte/signed byte/word/signed word) 0 Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@return Added new block during phi lifting main::@5(between main::@2 and main::@1) @@ -1242,19 +1242,19 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::y#2 ← phi( main/(byte) 0 main::@5/(byte~) main::y#5 ) - (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@5/(byte~) main::e#6 ) - (byte) main::x#2 ← phi( main/(byte) 0 main::@5/(byte~) main::x#5 ) - (word) main::idx#3 ← phi( main/(byte) 0+(byte) 0*(byte) 40 main::@5/(word~) main::idx#6 ) + (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::y#5 ) + (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@5/(byte~) main::e#6 ) + (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::x#5 ) + (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@5/(word~) main::idx#6 ) *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 - (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 - (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 + (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 if((const byte) main::xd#0>=(byte) main::e#1) goto main::@6 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 - (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 + (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 + (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 (word~) main::idx#8 ← (word) main::idx#2 (byte~) main::e#8 ← (byte) main::e#2 @@ -1264,7 +1264,7 @@ main::@2: scope:[main] from main::@3 main::@6 (byte) main::y#4 ← phi( main::@6/(byte~) main::y#6 main::@3/(byte~) main::y#7 ) (byte) main::e#5 ← phi( main::@6/(byte~) main::e#7 main::@3/(byte~) main::e#8 ) (word) main::idx#5 ← phi( main::@6/(word~) main::idx#7 main::@3/(word~) main::idx#8 ) - if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@5 + if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@5 to:main::@return main::@return: scope:[main] from main::@2 return @@ -1304,19 +1304,19 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::y#2 ← phi( main/(byte) 0 main::@5/(byte~) main::y#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@5/(byte~) main::e#6 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte) main::x#2 ← phi( main/(byte) 0 main::@5/(byte~) main::x#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] - [2] (word) main::idx#3 ← phi( main/(byte) 0+(byte) 0*(byte) 40 main::@5/(word~) main::idx#6 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::y#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@5/(byte~) main::e#6 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::x#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] + [2] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@5/(word~) main::idx#6 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] - [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] - [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] + [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] + [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@6 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] - [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] + [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] + [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] [11] (word~) main::idx#8 ← (word) main::idx#2 [ main::x#1 main::y#1 main::e#2 main::idx#8 ] [12] (byte~) main::e#8 ← (byte) main::e#2 [ main::x#1 main::y#1 main::idx#8 main::e#8 ] @@ -1326,7 +1326,7 @@ main::@2: scope:[main] from main::@3 main::@6 [14] (byte) main::y#4 ← phi( main::@6/(byte~) main::y#6 main::@3/(byte~) main::y#7 ) [ main::x#1 main::idx#5 main::e#5 main::y#4 ] [14] (byte) main::e#5 ← phi( main::@6/(byte~) main::e#7 main::@3/(byte~) main::e#8 ) [ main::x#1 main::idx#5 main::e#5 main::y#4 ] [14] (word) main::idx#5 ← phi( main::@6/(word~) main::idx#7 main::@3/(word~) main::idx#8 ) [ main::x#1 main::idx#5 main::e#5 main::y#4 ] - [15] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@5 [ main::x#1 main::idx#5 main::e#5 main::y#4 ] + [15] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@5 [ main::x#1 main::idx#5 main::e#5 main::y#4 ] to:main::@return main::@return: scope:[main] from main::@2 [16] return [ ] @@ -1377,26 +1377,26 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::y#2 ← phi( main/(byte) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] - [2] (byte) main::x#2 ← phi( main/(byte) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] - [2] (word) main::idx#3 ← phi( main/(byte) 0+(byte) 0*(byte) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] + [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] + [2] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] - [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] - [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] + [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] + [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] - [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] + [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] + [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [11] (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) [ main::idx#5 main::x#1 main::e#5 main::y#4 ] [11] (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) [ main::idx#5 main::x#1 main::e#5 main::y#4 ] [11] (word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 ) [ main::idx#5 main::x#1 main::e#5 main::y#4 ] - [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] + [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] to:main::@return main::@return: scope:[main] from main::@2 [13] return [ ] @@ -1413,26 +1413,26 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::y#2 ← phi( main/(byte) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (byte) main::x#2 ← phi( main/(byte) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) - [2] (word) main::idx#3 ← phi( main/(byte) 0+(byte) 0*(byte) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) + [2] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) - [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) - [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) + [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) + [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ) [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ) to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) - [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) + [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) + [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [11] (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) [11] (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) [11] (word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 ) [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) - [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) + [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) to:main::@return main::@return: scope:[main] from main::@2 [13] return [ ] ( main:0 [ ] ) @@ -1441,12 +1441,12 @@ main::@return: scope:[main] from main::@2 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@3 dominated by @1 @begin main::@1 main::@3 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main +main::@3 dominated by @1 @begin main::@1 main main::@3 +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main Found back edge: Loop head: main::@1 tails: main::@2 blocks: null Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 main::@3 @@ -1534,16 +1534,16 @@ main: { .label y = 6 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- zpby1=coby1 lda #yd/2 sta e - //SEG11 [2] phi (byte) main::x#2 = (byte) 0 [phi:main->main::@1#2] -- zpby1=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- zpby1=coby1 lda #0 sta x - //SEG12 [2] phi (word) main::idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:main->main::@1#3] -- zpwo1=coby1 + //SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx lda #0 @@ -1569,9 +1569,9 @@ main: { lda #STAR !: sta screen - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- zpby1=zpby1_plus_1 inc x - //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 + //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 inc idx bne !+ inc idx+1 @@ -1588,9 +1588,9 @@ main: { jmp b3 //SEG24 main::@3 b3: - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 + //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 lda idx clc adc #<$28 @@ -1612,7 +1612,7 @@ main: { jmp b2 //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- zpby1_lt_coby1_then_la1 lda x cmp #x1+1 bcc b1_from_b2 @@ -1629,11 +1629,11 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ ma Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] Statement [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ) always clobbers reg byte a -Statement [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) always clobbers reg byte a +Statement [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) always clobbers reg byte a Statement [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) always clobbers reg byte a Statement [3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) always clobbers reg byte a Statement [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( main:0 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ) always clobbers reg byte a -Statement [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) always clobbers reg byte a +Statement [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) always clobbers reg byte a Statement [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] : zp ZP_WORD:2 , Potential registers zp ZP_BYTE:4 [ main::x#2 main::x#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -1644,10 +1644,10 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 55: zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] 29.33: zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp ZP_BYTE:4 [ main::x#2 main::x#1 ] Uplift Scope [] -Uplifting [main] best 1265 combination reg byte y [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] reg byte x [ main::x#2 main::x#1 ] -Uplifting [] best 1265 combination +Uplifting [main] best 1305 combination reg byte y [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] reg byte x [ main::x#2 main::x#1 ] +Uplifting [] best 1305 combination Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] -Uplifting [main] best 1265 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] +Uplifting [main] best 1305 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ] Removing instruction jmp b1 Removing instruction jmp bend @@ -1684,14 +1684,14 @@ main: { .label y = 4 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- yby=coby1 ldy #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 0 [phi:main->main::@1#2] -- xby=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 ldx #0 - //SEG12 [2] phi (word) main::idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:main->main::@1#3] -- zpwo1=coby1 + //SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx lda #0 @@ -1716,9 +1716,9 @@ main: { lda #STAR !: sta screen - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 inx - //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 + //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 inc idx bne !+ inc idx+1 @@ -1733,9 +1733,9 @@ main: { bcc b2_from_b1 //SEG24 main::@3 b3: - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 + //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 lda idx clc adc #<$28 @@ -1756,7 +1756,7 @@ main: { //SEG31 [11] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 cpx #x1+1 bcc b1_from_b2 //SEG34 main::@return @@ -1801,14 +1801,14 @@ main: { .label y = 4 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- yby=coby1 ldy #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 0 [phi:main->main::@1#2] -- xby=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 tax - //SEG12 [2] phi (word) main::idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:main->main::@1#3] -- zpwo1=coby1 + //SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx txa @@ -1832,9 +1832,9 @@ main: { lda #STAR !: sta screen - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 inx - //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 + //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 inc idx bne !+ inc idx+1 @@ -1849,9 +1849,9 @@ main: { bcc b2 //SEG24 main::@3 b3: - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 + //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 lda idx clc adc #<$28 @@ -1870,7 +1870,7 @@ main: { //SEG31 [11] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 cpx #x1+1 bcc b1 //SEG34 main::@return @@ -1908,14 +1908,14 @@ main: { .label idx = 2 .label y = 4 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- yby=coby1 ldy #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 0 [phi:main->main::@1#2] -- xby=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 tax - //SEG12 [2] phi (word) main::idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:main->main::@1#3] -- zpwo1=coby1 + //SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx txa @@ -1939,9 +1939,9 @@ main: { lda #STAR !: sta screen - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 inx - //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 + //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 inc idx bne !+ inc idx+1 @@ -1955,9 +1955,9 @@ main: { cpy #xd bcc b2 //SEG24 main::@3 - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 + //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 lda idx clc adc #<$28 @@ -1976,7 +1976,7 @@ main: { //SEG31 [11] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 cpx #x1+1 bcc b1 //SEG34 main::@return @@ -2009,14 +2009,14 @@ main: { .label idx = 2 .label y = 4 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- yby=coby1 ldy #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 0 [phi:main->main::@1#2] -- xby=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 tax - //SEG12 [2] phi (word) main::idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:main->main::@1#3] -- zpwo1=coby1 + //SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx txa @@ -2039,9 +2039,9 @@ main: { lda #STAR !: sta screen - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 inx - //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 + //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 inc idx bne !+ inc idx+1 @@ -2055,9 +2055,9 @@ main: { cpy #xd bcc b2 //SEG24 main::@3 - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 + //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 lda idx clc adc #<$28 @@ -2076,7 +2076,7 @@ main: { //SEG31 [11] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 cpx #x1+1 bcc b1 //SEG34 main::@return @@ -2094,7 +2094,7 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (byte) main::STAR -(const byte) main::STAR#0 STAR = (byte) 81 +(const byte) main::STAR#0 STAR = (byte/signed byte/word/signed word) 81 (byte) main::e (byte) main::e#1 reg byte y 11.0 (byte) main::e#2 reg byte y 22.0 @@ -2106,24 +2106,24 @@ FINAL SYMBOL TABLE (word) main::idx#3 idx zp ZP_WORD:2 11.0 (word) main::idx#5 idx zp ZP_WORD:2 16.5 (byte[1000]) main::screen -(const byte[1000]) main::screen#0 screen = (word) 1024 +(const byte[1000]) main::screen#0 screen = (word/signed word) 1024 (byte) main::x (byte) main::x#1 reg byte x 3.666666666666667 (byte) main::x#2 reg byte x 11.0 (byte) main::x0 (byte) main::x1 -(const byte) main::x1#0 x1 = (byte) 39 +(const byte) main::x1#0 x1 = (byte/signed byte/word/signed word) 39 (byte) main::xd -(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte) 0 +(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte/signed byte/word/signed word) 0 (byte) main::y (byte) main::y#1 y zp ZP_BYTE:4 7.333333333333333 (byte) main::y#2 y zp ZP_BYTE:4 5.5 (byte) main::y#4 y zp ZP_BYTE:4 16.5 (byte) main::y0 (byte) main::y1 -(const byte) main::y1#0 y1 = (byte) 24 +(const byte) main::y1#0 y1 = (byte/signed byte/word/signed word) 24 (byte) main::yd -(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte) 0 +(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte/signed byte/word/signed word) 0 zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] reg byte x [ main::x#2 main::x#1 ] @@ -2153,14 +2153,14 @@ main: { .label idx = 2 .label y = 4 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta y - //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 [phi:main->main::@1#1] -- yby=coby1 ldy #yd/2 - //SEG11 [2] phi (byte) main::x#2 = (byte) 0 [phi:main->main::@1#2] -- xby=coby1 + //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 tax - //SEG12 [2] phi (word) main::idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:main->main::@1#3] -- zpwo1=coby1 + //SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx txa @@ -2183,9 +2183,9 @@ main: { lda #STAR !: sta screen - //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 + //SEG20 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) -- xby=xby_plus_1 inx - //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 + //SEG21 [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) -- zpwo1=zpwo1_plus_1 inc idx bne !+ inc idx+1 @@ -2199,9 +2199,9 @@ main: { cpy #xd bcc b2 //SEG24 main::@3 - //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 + //SEG25 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:0 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- zpby1=zpby1_plus_1 inc y - //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 + //SEG26 [9] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:0 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- zpwo1=zpwo1_plus_coby1 lda idx clc adc #<$28 @@ -2220,7 +2220,7 @@ main: { //SEG31 [11] phi (word) main::idx#5 = (word) main::idx#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG32 main::@2 b2: - //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 + //SEG33 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte/signed byte/word/signed word) 1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( main:0 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ) -- xby_lt_coby1_then_la1 cpx #x1+1 bcc b1 //SEG34 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym index 1b9e100f2..f243ffd8f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym @@ -7,7 +7,7 @@ (label) main::@3 (label) main::@return (byte) main::STAR -(const byte) main::STAR#0 STAR = (byte) 81 +(const byte) main::STAR#0 STAR = (byte/signed byte/word/signed word) 81 (byte) main::e (byte) main::e#1 reg byte y 11.0 (byte) main::e#2 reg byte y 22.0 @@ -19,24 +19,24 @@ (word) main::idx#3 idx zp ZP_WORD:2 11.0 (word) main::idx#5 idx zp ZP_WORD:2 16.5 (byte[1000]) main::screen -(const byte[1000]) main::screen#0 screen = (word) 1024 +(const byte[1000]) main::screen#0 screen = (word/signed word) 1024 (byte) main::x (byte) main::x#1 reg byte x 3.666666666666667 (byte) main::x#2 reg byte x 11.0 (byte) main::x0 (byte) main::x1 -(const byte) main::x1#0 x1 = (byte) 39 +(const byte) main::x1#0 x1 = (byte/signed byte/word/signed word) 39 (byte) main::xd -(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte) 0 +(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte/signed byte/word/signed word) 0 (byte) main::y (byte) main::y#1 y zp ZP_BYTE:4 7.333333333333333 (byte) main::y#2 y zp ZP_BYTE:4 5.5 (byte) main::y#4 y zp ZP_BYTE:4 16.5 (byte) main::y0 (byte) main::y1 -(const byte) main::y1#0 y1 = (byte) 24 +(const byte) main::y1#0 y1 = (byte/signed byte/word/signed word) 24 (byte) main::yd -(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte) 0 +(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte/signed byte/word/signed word) 0 zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] reg byte x [ main::x#2 main::x#1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.cfg b/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.cfg index f18fcf1c9..04c657780 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.cfg @@ -15,9 +15,9 @@ main::@return: scope:[main] from main::@1 [4] return [ ] ( main:0 [ ] ) to:@return line: scope:[line] from main main::@1 - [5] (byte) line::x1#3 ← phi( main/(byte) 2 main::@1/(byte) 5 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) - [5] (byte*) screen#14 ← phi( main/(word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) - [5] (byte) line::x#0 ← phi( main/(byte) 1 main::@1/(byte) 3 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) + [5] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) + [5] (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) + [5] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) to:line::@1 line::@1: scope:[line] from line line::@1 [6] (byte*) screen#10 ← phi( line/(byte*) screen#14 line::@1/(byte*) screen#1 ) [ line::x1#3 line::x#2 screen#10 ] ( main:0::line:2 [ line::x1#3 line::x#2 screen#10 ] main:0::line:3 [ line::x1#3 line::x#2 screen#10 ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.log b/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.log index ab6a6fd9f..408b95401 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.log @@ -19,10 +19,10 @@ void line(byte x0, byte x1) { Adding pre/post-modifier (byte*) screen ← ++ (byte*) screen Adding pre/post-modifier (byte) line::x ← ++ (byte) line::x PROGRAM - (byte*) screen ← (word) 1024 + (byte*) screen ← (word/signed word) 1024 proc (void()) main() - (void~) main::$0 ← call line (byte) 1 (byte) 2 - (void~) main::$1 ← call line (byte) 3 (byte) 5 + (void~) main::$0 ← call line (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 + (void~) main::$1 ← call line (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word) 5 main::@return: return endproc // main() @@ -55,11 +55,11 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen ← (word) 1024 + (byte*) screen ← (word/signed word) 1024 to:@1 main: scope:[main] from - (void~) main::$0 ← call line (byte) 1 (byte) 2 - (void~) main::$1 ← call line (byte) 3 (byte) 5 + (void~) main::$0 ← call line (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 + (void~) main::$1 ← call line (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word) 5 to:main::@return main::@return: scope:[main] from main return @@ -90,11 +90,11 @@ Removing empty block @1 Removing empty block line::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen ← (word) 1024 + (byte*) screen ← (word/signed word) 1024 to:@2 main: scope:[main] from - (void~) main::$0 ← call line (byte) 1 (byte) 2 - (void~) main::$1 ← call line (byte) 3 (byte) 5 + (void~) main::$0 ← call line (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 + (void~) main::$1 ← call line (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word) 5 to:main::@return main::@return: scope:[main] from main return @@ -123,17 +123,17 @@ line modifies screen CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) screen ← (word) 1024 + (byte*) screen ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) line::x0 ← (byte) 1 - (byte) line::x1 ← (byte) 2 + (byte) line::x0 ← (byte/signed byte/word/signed word) 1 + (byte) line::x1 ← (byte/signed byte/word/signed word) 2 call line param-assignment to:main::@1 main::@1: scope:[main] from main (byte*) screen ← (byte*) screen - (byte) line::x0 ← (byte) 3 - (byte) line::x1 ← (byte) 5 + (byte) line::x0 ← (byte/signed byte/word/signed word) 3 + (byte) line::x1 ← (byte/signed byte/word/signed word) 5 call line param-assignment to:main::@2 main::@2: scope:[main] from main::@1 @@ -169,19 +169,19 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) screen#0 ← (word) 1024 + (byte*) screen#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) screen#13 ← phi( @2/(byte*) screen#15 ) - (byte) line::x0#0 ← (byte) 1 - (byte) line::x1#0 ← (byte) 2 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 2 call line param-assignment to:main::@1 main::@1: scope:[main] from main (byte*) screen#7 ← phi( main/(byte*) screen#13 ) (byte*) screen#1 ← (byte*) screen#7 - (byte) line::x0#1 ← (byte) 3 - (byte) line::x1#1 ← (byte) 5 + (byte) line::x0#1 ← (byte/signed byte/word/signed word) 3 + (byte) line::x1#1 ← (byte/signed byte/word/signed word) 5 call line param-assignment to:main::@2 main::@2: scope:[main] from main::@1 @@ -226,19 +226,19 @@ line::@return: scope:[line] from line::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) screen#0 ← (word) 1024 + (byte*) screen#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) screen#13 ← phi( @2/(byte*) screen#15 ) - (byte) line::x0#0 ← (byte) 1 - (byte) line::x1#0 ← (byte) 2 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 2 call line param-assignment to:main::@1 main::@1: scope:[main] from main (byte*) screen#7 ← phi( main/(byte*) screen#5 ) (byte*) screen#1 ← (byte*) screen#7 - (byte) line::x0#1 ← (byte) 3 - (byte) line::x1#1 ← (byte) 5 + (byte) line::x0#1 ← (byte/signed byte/word/signed word) 3 + (byte) line::x1#1 ← (byte/signed byte/word/signed word) 5 call line param-assignment to:main::@2 main::@2: scope:[main] from main::@1 @@ -331,16 +331,16 @@ Alias (byte) line::x#0 = (byte) line::x0#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen#0 ← (word) 1024 + (byte*) screen#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) line::x0#0 ← (byte) 1 - (byte) line::x1#0 ← (byte) 2 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 2 call line param-assignment to:main::@1 main::@1: scope:[main] from main - (byte) line::x0#1 ← (byte) 3 - (byte) line::x1#1 ← (byte) 5 + (byte) line::x0#1 ← (byte/signed byte/word/signed word) 3 + (byte) line::x1#1 ← (byte/signed byte/word/signed word) 5 call line param-assignment to:main::@2 main::@2: scope:[main] from main::@1 @@ -377,16 +377,16 @@ Self Phi Eliminated (byte) line::x1#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen#0 ← (word) 1024 + (byte*) screen#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) line::x0#0 ← (byte) 1 - (byte) line::x1#0 ← (byte) 2 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 2 call line param-assignment to:main::@1 main::@1: scope:[main] from main - (byte) line::x0#1 ← (byte) 3 - (byte) line::x1#1 ← (byte) 5 + (byte) line::x0#1 ← (byte/signed byte/word/signed word) 3 + (byte) line::x1#1 ← (byte/signed byte/word/signed word) 5 call line param-assignment to:main::@2 main::@2: scope:[main] from main::@1 @@ -423,16 +423,16 @@ Redundant Phi (byte) line::x1#2 (byte) line::x1#3 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen#0 ← (word) 1024 + (byte*) screen#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) line::x0#0 ← (byte) 1 - (byte) line::x1#0 ← (byte) 2 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 2 call line param-assignment to:main::@1 main::@1: scope:[main] from main - (byte) line::x0#1 ← (byte) 3 - (byte) line::x1#1 ← (byte) 5 + (byte) line::x0#1 ← (byte/signed byte/word/signed word) 3 + (byte) line::x1#1 ← (byte/signed byte/word/signed word) 5 call line param-assignment to:main::@2 main::@2: scope:[main] from main::@1 @@ -468,16 +468,16 @@ Simple Condition (boolean~) line::$0 if((byte) line::x#1<(byte) line::x1#3) goto Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen#0 ← (word) 1024 + (byte*) screen#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) line::x0#0 ← (byte) 1 - (byte) line::x1#0 ← (byte) 2 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 2 call line param-assignment to:main::@1 main::@1: scope:[main] from main - (byte) line::x0#1 ← (byte) 3 - (byte) line::x1#1 ← (byte) 5 + (byte) line::x0#1 ← (byte/signed byte/word/signed word) 3 + (byte) line::x1#1 ← (byte/signed byte/word/signed word) 5 call line param-assignment to:main::@2 main::@2: scope:[main] from main::@1 @@ -596,11 +596,11 @@ Inlining constant with different constant siblings (const byte) line::x1#1 Inlining constant with var siblings (const byte*) screen#0 Inlining constant with var siblings (const byte*) screen#0 Inlining constant with var siblings (const byte*) screen#0 -Constant inlined line::x0#0 = (byte) 1 -Constant inlined line::x0#1 = (byte) 3 -Constant inlined screen#0 = (word) 1024 -Constant inlined line::x1#0 = (byte) 2 -Constant inlined line::x1#1 = (byte) 5 +Constant inlined line::x0#0 = (byte/signed byte/word/signed word) 1 +Constant inlined line::x1#1 = (byte/signed byte/word/signed word) 5 +Constant inlined screen#0 = (word/signed word) 1024 +Constant inlined line::x1#0 = (byte/signed byte/word/signed word) 2 +Constant inlined line::x0#1 = (byte/signed byte/word/signed word) 3 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -615,9 +615,9 @@ main::@return: scope:[main] from main::@1 return to:@return line: scope:[line] from main main::@1 - (byte) line::x1#3 ← phi( main/(byte) 2 main::@1/(byte) 5 ) - (byte*) screen#14 ← phi( main/(word) 1024 main::@1/(byte*) screen#1 ) - (byte) line::x#0 ← phi( main/(byte) 1 main::@1/(byte) 3 ) + (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) + (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*) screen#1 ) + (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) to:line::@1 line::@1: scope:[line] from line line::@1 (byte*) screen#10 ← phi( line/(byte*) screen#14 line::@1/(byte*) screen#1 ) @@ -678,9 +678,9 @@ main::@return: scope:[main] from main::@1 return to:@return line: scope:[line] from main main::@1 - (byte) line::x1#3 ← phi( main/(byte) 2 main::@1/(byte) 5 ) - (byte*) screen#14 ← phi( main/(word) 1024 main::@1/(byte*~) screen#16 ) - (byte) line::x#0 ← phi( main/(byte) 1 main::@1/(byte) 3 ) + (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) + (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*~) screen#16 ) + (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) (byte~) line::x#3 ← (byte) line::x#0 (byte*~) screen#17 ← (byte*) screen#14 to:line::@1 @@ -732,9 +732,9 @@ main::@return: scope:[main] from main::@1 [5] return [ ] to:@return line: scope:[line] from main main::@1 - [6] (byte) line::x1#3 ← phi( main/(byte) 2 main::@1/(byte) 5 ) [ line::x#0 screen#14 line::x1#3 ] - [6] (byte*) screen#14 ← phi( main/(word) 1024 main::@1/(byte*~) screen#16 ) [ line::x#0 screen#14 line::x1#3 ] - [6] (byte) line::x#0 ← phi( main/(byte) 1 main::@1/(byte) 3 ) [ line::x#0 screen#14 line::x1#3 ] + [6] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] + [6] (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*~) screen#16 ) [ line::x#0 screen#14 line::x1#3 ] + [6] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] [7] (byte~) line::x#3 ← (byte) line::x#0 [ screen#14 line::x1#3 line::x#3 ] [8] (byte*~) screen#17 ← (byte*) screen#14 [ line::x1#3 line::x#3 screen#17 ] to:line::@1 @@ -788,9 +788,9 @@ main::@return: scope:[main] from main::@1 [4] return [ ] to:@return line: scope:[line] from main main::@1 - [5] (byte) line::x1#3 ← phi( main/(byte) 2 main::@1/(byte) 5 ) [ line::x#0 screen#14 line::x1#3 ] - [5] (byte*) screen#14 ← phi( main/(word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] - [5] (byte) line::x#0 ← phi( main/(byte) 1 main::@1/(byte) 3 ) [ line::x#0 screen#14 line::x1#3 ] + [5] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] + [5] (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] + [5] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] to:line::@1 line::@1: scope:[line] from line line::@1 [6] (byte*) screen#10 ← phi( line/(byte*) screen#14 line::@1/(byte*) screen#1 ) [ line::x1#3 line::x#2 screen#10 ] @@ -822,9 +822,9 @@ main::@return: scope:[main] from main::@1 [4] return [ ] ( main:0 [ ] ) to:@return line: scope:[line] from main main::@1 - [5] (byte) line::x1#3 ← phi( main/(byte) 2 main::@1/(byte) 5 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) - [5] (byte*) screen#14 ← phi( main/(word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) - [5] (byte) line::x#0 ← phi( main/(byte) 1 main::@1/(byte) 3 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) + [5] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) + [5] (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) + [5] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) to:line::@1 line::@1: scope:[line] from line line::@1 [6] (byte*) screen#10 ← phi( line/(byte*) screen#14 line::@1/(byte*) screen#1 ) [ line::x1#3 line::x#2 screen#10 ] ( main:0::line:2 [ line::x1#3 line::x#2 screen#10 ] main:0::line:3 [ line::x1#3 line::x#2 screen#10 ] ) @@ -841,13 +841,13 @@ line::@return: scope:[line] from line::@1 DOMINATORS @begin dominated by @begin @2 dominated by @2 @begin -@end dominated by @2 @end @begin +@end dominated by @2 @begin @end main dominated by @2 @begin main main::@1 dominated by @2 @begin main::@1 main -main::@return dominated by @2 main::@return @begin main::@1 main +main::@return dominated by main::@return @2 @begin main::@1 main line dominated by @2 @begin line main -line::@1 dominated by @2 @begin line::@1 line main -line::@return dominated by @2 @begin line::@1 line line::@return main +line::@1 dominated by @2 @begin line line::@1 main +line::@return dominated by @2 @begin line line::@return line::@1 main Found back edge: Loop head: line::@1 tails: line::@1 blocks: null Populated: Loop head: line::@1 tails: line::@1 blocks: line::@1 @@ -912,15 +912,15 @@ main: { //SEG8 [2] call line param-assignment [ ] ( main:0 [ ] ) //SEG9 [5] phi from main to line [phi:main->line] line_from_main: - //SEG10 [5] phi (byte) line::x1#3 = (byte) 2 [phi:main->line#0] -- zpby1=coby1 + //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 lda #2 sta line.x1 - //SEG11 [5] phi (byte*) screen#14 = (word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG12 [5] phi (byte) line::x#0 = (byte) 1 [phi:main->line#2] -- zpby1=coby1 + //SEG12 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 1 [phi:main->line#2] -- zpby1=coby1 lda #1 sta line.x jsr line @@ -930,11 +930,11 @@ main: { //SEG14 [3] call line param-assignment [ ] ( main:0 [ ] ) //SEG15 [5] phi from main::@1 to line [phi:main::@1->line] line_from_b1: - //SEG16 [5] phi (byte) line::x1#3 = (byte) 5 [phi:main::@1->line#0] -- zpby1=coby1 + //SEG16 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 5 [phi:main::@1->line#0] -- zpby1=coby1 lda #5 sta line.x1 //SEG17 [5] phi (byte*) screen#14 = (byte*) screen#1 [phi:main::@1->line#1] -- register_copy - //SEG18 [5] phi (byte) line::x#0 = (byte) 3 [phi:main::@1->line#2] -- zpby1=coby1 + //SEG18 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 3 [phi:main::@1->line#2] -- zpby1=coby1 lda #3 sta line.x jsr line @@ -992,11 +992,11 @@ Uplift Scope [line] 30.17: zp ZP_BYTE:3 [ line::x#2 line::x#0 line::x#1 ] 1.83: Uplift Scope [] 29.5: zp ZP_PTR_BYTE:4 [ screen#10 screen#14 screen#1 ] Uplift Scope [main] -Uplifting [line] best 453 combination reg byte x [ line::x#2 line::x#0 line::x#1 ] zp ZP_BYTE:2 [ line::x1#3 ] -Uplifting [] best 453 combination zp ZP_PTR_BYTE:4 [ screen#10 screen#14 screen#1 ] -Uplifting [main] best 453 combination +Uplifting [line] best 464 combination reg byte x [ line::x#2 line::x#0 line::x#1 ] zp ZP_BYTE:2 [ line::x1#3 ] +Uplifting [] best 464 combination zp ZP_PTR_BYTE:4 [ screen#10 screen#14 screen#1 ] +Uplifting [main] best 464 combination Attempting to uplift remaining variables inzp ZP_BYTE:2 [ line::x1#3 ] -Uplifting [line] best 453 combination zp ZP_BYTE:2 [ line::x1#3 ] +Uplifting [line] best 464 combination zp ZP_BYTE:2 [ line::x1#3 ] Allocated (was zp ZP_PTR_BYTE:4) zp ZP_PTR_BYTE:3 [ screen#10 screen#14 screen#1 ] Removing instruction jmp b2 Removing instruction jmp bend @@ -1027,15 +1027,15 @@ main: { //SEG8 [2] call line param-assignment [ ] ( main:0 [ ] ) //SEG9 [5] phi from main to line [phi:main->line] line_from_main: - //SEG10 [5] phi (byte) line::x1#3 = (byte) 2 [phi:main->line#0] -- zpby1=coby1 + //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 lda #2 sta line.x1 - //SEG11 [5] phi (byte*) screen#14 = (word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG12 [5] phi (byte) line::x#0 = (byte) 1 [phi:main->line#2] -- xby=coby1 + //SEG12 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 1 [phi:main->line#2] -- xby=coby1 ldx #1 jsr line //SEG13 main::@1 @@ -1043,11 +1043,11 @@ main: { //SEG14 [3] call line param-assignment [ ] ( main:0 [ ] ) //SEG15 [5] phi from main::@1 to line [phi:main::@1->line] line_from_b1: - //SEG16 [5] phi (byte) line::x1#3 = (byte) 5 [phi:main::@1->line#0] -- zpby1=coby1 + //SEG16 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 5 [phi:main::@1->line#0] -- zpby1=coby1 lda #5 sta line.x1 //SEG17 [5] phi (byte*) screen#14 = (byte*) screen#1 [phi:main::@1->line#1] -- register_copy - //SEG18 [5] phi (byte) line::x#0 = (byte) 3 [phi:main::@1->line#2] -- xby=coby1 + //SEG18 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 3 [phi:main::@1->line#2] -- xby=coby1 ldx #3 jsr line //SEG19 main::@return @@ -1112,26 +1112,26 @@ main: { //SEG8 [2] call line param-assignment [ ] ( main:0 [ ] ) //SEG9 [5] phi from main to line [phi:main->line] line_from_main: - //SEG10 [5] phi (byte) line::x1#3 = (byte) 2 [phi:main->line#0] -- zpby1=coby1 + //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 lda #2 sta line.x1 - //SEG11 [5] phi (byte*) screen#14 = (word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG12 [5] phi (byte) line::x#0 = (byte) 1 [phi:main->line#2] -- xby=coby1 + //SEG12 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 1 [phi:main->line#2] -- xby=coby1 ldx #1 jsr line //SEG13 main::@1 b1: //SEG14 [3] call line param-assignment [ ] ( main:0 [ ] ) //SEG15 [5] phi from main::@1 to line [phi:main::@1->line] - //SEG16 [5] phi (byte) line::x1#3 = (byte) 5 [phi:main::@1->line#0] -- zpby1=coby1 + //SEG16 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 5 [phi:main::@1->line#0] -- zpby1=coby1 lda #5 sta line.x1 //SEG17 [5] phi (byte*) screen#14 = (byte*) screen#1 [phi:main::@1->line#1] -- register_copy - //SEG18 [5] phi (byte) line::x#0 = (byte) 3 [phi:main::@1->line#2] -- xby=coby1 + //SEG18 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 3 [phi:main::@1->line#2] -- xby=coby1 ldx #3 jsr line //SEG19 main::@return @@ -1191,25 +1191,25 @@ ASSEMBLER main: { //SEG8 [2] call line param-assignment [ ] ( main:0 [ ] ) //SEG9 [5] phi from main to line [phi:main->line] - //SEG10 [5] phi (byte) line::x1#3 = (byte) 2 [phi:main->line#0] -- zpby1=coby1 + //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 lda #2 sta line.x1 - //SEG11 [5] phi (byte*) screen#14 = (word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG12 [5] phi (byte) line::x#0 = (byte) 1 [phi:main->line#2] -- xby=coby1 + //SEG12 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 1 [phi:main->line#2] -- xby=coby1 ldx #1 jsr line //SEG13 main::@1 //SEG14 [3] call line param-assignment [ ] ( main:0 [ ] ) //SEG15 [5] phi from main::@1 to line [phi:main::@1->line] - //SEG16 [5] phi (byte) line::x1#3 = (byte) 5 [phi:main::@1->line#0] -- zpby1=coby1 + //SEG16 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 5 [phi:main::@1->line#0] -- zpby1=coby1 lda #5 sta line.x1 //SEG17 [5] phi (byte*) screen#14 = (byte*) screen#1 [phi:main::@1->line#1] -- register_copy - //SEG18 [5] phi (byte) line::x#0 = (byte) 3 [phi:main::@1->line#2] -- xby=coby1 + //SEG18 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 3 [phi:main::@1->line#2] -- xby=coby1 ldx #3 jsr line //SEG19 main::@return @@ -1286,25 +1286,25 @@ FINAL CODE main: { //SEG8 [2] call line param-assignment [ ] ( main:0 [ ] ) //SEG9 [5] phi from main to line [phi:main->line] - //SEG10 [5] phi (byte) line::x1#3 = (byte) 2 [phi:main->line#0] -- zpby1=coby1 + //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 lda #2 sta line.x1 - //SEG11 [5] phi (byte*) screen#14 = (word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG12 [5] phi (byte) line::x#0 = (byte) 1 [phi:main->line#2] -- xby=coby1 + //SEG12 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 1 [phi:main->line#2] -- xby=coby1 ldx #1 jsr line //SEG13 main::@1 //SEG14 [3] call line param-assignment [ ] ( main:0 [ ] ) //SEG15 [5] phi from main::@1 to line [phi:main::@1->line] - //SEG16 [5] phi (byte) line::x1#3 = (byte) 5 [phi:main::@1->line#0] -- zpby1=coby1 + //SEG16 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 5 [phi:main::@1->line#0] -- zpby1=coby1 lda #5 sta line.x1 //SEG17 [5] phi (byte*) screen#14 = (byte*) screen#1 [phi:main::@1->line#1] -- register_copy - //SEG18 [5] phi (byte) line::x#0 = (byte) 3 [phi:main::@1->line#2] -- xby=coby1 + //SEG18 [5] phi (byte) line::x#0 = (byte/signed byte/word/signed word) 3 [phi:main::@1->line#2] -- xby=coby1 ldx #3 jsr line //SEG19 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/chargen.cfg b/src/main/java/dk/camelot64/kickc/test/ref/chargen.cfg index c3e411bd0..0b19ade91 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/chargen.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/chargen.cfg @@ -6,19 +6,19 @@ @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) + [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@5 [3] (byte*) main::sc#7 ← phi( main/(const byte*) SCREEN#0 main::@5/(byte*) main::sc#2 ) [ main::y#2 main::sc#7 ] ( main:0 [ main::y#2 main::sc#7 ] ) - [3] (byte) main::y#2 ← phi( main/(byte) 0 main::@5/(byte) main::y#1 ) [ main::y#2 main::sc#7 ] ( main:0 [ main::y#2 main::sc#7 ] ) + [3] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::y#1 ) [ main::y#2 main::sc#7 ] ( main:0 [ main::y#2 main::sc#7 ] ) [4] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#7 main::bits#0 ] ( main:0 [ main::y#2 main::sc#7 main::bits#0 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - [5] (byte) main::x#2 ← phi( main::@1/(byte) 0 main::@3/(byte) main::x#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) + [5] (byte) main::x#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::x#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) [5] (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) [5] (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) - [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) - [7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) + [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) + [7] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) to:main::@4 main::@4: scope:[main] from main::@2 to:main::@3 @@ -26,17 +26,17 @@ main::@3: scope:[main] from main::@2 main::@4 [8] (byte) main::c#2 ← phi( main::@2/(byte) '.' main::@4/(byte) '*' ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::c#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::c#2 ] ) [9] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) [10] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] ( main:0 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] ) - [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) + [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) [12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) - [13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) + [13] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) to:main::@5 main::@5: scope:[main] from main::@3 - [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) + [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) [15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) - [16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) + [16] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) to:main::@6 main::@6: scope:[main] from main::@5 - [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) + [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) asm { cli } to:main::@return main::@return: scope:[main] from main::@6 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/chargen.log b/src/main/java/dk/camelot64/kickc/test/ref/chargen.log index f0e9a5c7d..c4f979f28 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/chargen.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/chargen.log @@ -26,41 +26,41 @@ void main() { Adding pre/post-modifier (byte*) main::sc ← ++ (byte*) main::sc PROGRAM - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() asm { sei } - (byte*~) main::$0 ← (byte*) CHARGEN + (byte) 8 + (byte*~) main::$0 ← (byte*) CHARGEN + (byte/signed byte/word/signed word) 8 (byte*) main::CHAR_A ← (byte*~) main::$0 - *((byte*) PROCPORT) ← (byte) 50 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc ← (byte*) SCREEN - (byte) main::y ← (byte) 0 + (byte) main::y ← (byte/signed byte/word/signed word) 0 main::@1: (byte~) main::$1 ← (byte*) main::CHAR_A *idx (byte) main::y (byte) main::bits ← (byte~) main::$1 - (byte) main::x ← (byte) 0 + (byte) main::x ← (byte/signed byte/word/signed word) 0 main::@2: (byte) main::c ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits & (byte) 128 - (boolean~) main::$3 ← (byte~) main::$2 != (byte) 0 + (byte~) main::$2 ← (byte) main::bits & (byte/word/signed word) 128 + (boolean~) main::$3 ← (byte~) main::$2 != (byte/signed byte/word/signed word) 0 (boolean~) main::$4 ← ! (boolean~) main::$3 if((boolean~) main::$4) goto main::@3 (byte) main::c ← (byte) '*' main::@3: *((byte*) main::sc) ← (byte) main::c (byte*) main::sc ← ++ (byte*) main::sc - (byte~) main::$5 ← (byte) main::bits << (byte) 1 + (byte~) main::$5 ← (byte) main::bits << (byte/signed byte/word/signed word) 1 (byte) main::bits ← (byte~) main::$5 (byte) main::x ← ++ (byte) main::x - (boolean~) main::$6 ← (byte) main::x != (byte) 8 + (boolean~) main::$6 ← (byte) main::x != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 - (byte*~) main::$7 ← (byte*) main::sc + (byte) 32 + (byte*~) main::$7 ← (byte*) main::sc + (byte/signed byte/word/signed word) 32 (byte*) main::sc ← (byte*~) main::$7 (byte) main::y ← ++ (byte) main::y - (boolean~) main::$8 ← (byte) main::y != (byte) 8 + (boolean~) main::$8 ← (byte) main::y != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } main::@return: return @@ -94,51 +94,51 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from asm { sei } - (byte*~) main::$0 ← (byte*) CHARGEN + (byte) 8 + (byte*~) main::$0 ← (byte*) CHARGEN + (byte/signed byte/word/signed word) 8 (byte*) main::CHAR_A ← (byte*~) main::$0 - *((byte*) PROCPORT) ← (byte) 50 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc ← (byte*) SCREEN - (byte) main::y ← (byte) 0 + (byte) main::y ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte~) main::$1 ← (byte*) main::CHAR_A *idx (byte) main::y (byte) main::bits ← (byte~) main::$1 - (byte) main::x ← (byte) 0 + (byte) main::x ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte) main::c ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits & (byte) 128 - (boolean~) main::$3 ← (byte~) main::$2 != (byte) 0 + (byte~) main::$2 ← (byte) main::bits & (byte/word/signed word) 128 + (boolean~) main::$3 ← (byte~) main::$2 != (byte/signed byte/word/signed word) 0 (boolean~) main::$4 ← ! (boolean~) main::$3 if((boolean~) main::$4) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 *((byte*) main::sc) ← (byte) main::c (byte*) main::sc ← ++ (byte*) main::sc - (byte~) main::$5 ← (byte) main::bits << (byte) 1 + (byte~) main::$5 ← (byte) main::bits << (byte/signed byte/word/signed word) 1 (byte) main::bits ← (byte~) main::$5 (byte) main::x ← ++ (byte) main::x - (boolean~) main::$6 ← (byte) main::x != (byte) 8 + (boolean~) main::$6 ← (byte) main::x != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 (byte) main::c ← (byte) '*' to:main::@3 main::@5: scope:[main] from main::@3 - (byte*~) main::$7 ← (byte*) main::sc + (byte) 32 + (byte*~) main::$7 ← (byte*) main::sc + (byte/signed byte/word/signed word) 32 (byte*) main::sc ← (byte*~) main::$7 (byte) main::y ← ++ (byte) main::y - (boolean~) main::$8 ← (byte) main::y != (byte) 8 + (boolean~) main::$8 ← (byte) main::y != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -153,51 +153,51 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } - (byte*~) main::$0 ← (byte*) CHARGEN + (byte) 8 + (byte*~) main::$0 ← (byte*) CHARGEN + (byte/signed byte/word/signed word) 8 (byte*) main::CHAR_A ← (byte*~) main::$0 - *((byte*) PROCPORT) ← (byte) 50 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc ← (byte*) SCREEN - (byte) main::y ← (byte) 0 + (byte) main::y ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte~) main::$1 ← (byte*) main::CHAR_A *idx (byte) main::y (byte) main::bits ← (byte~) main::$1 - (byte) main::x ← (byte) 0 + (byte) main::x ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte) main::c ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits & (byte) 128 - (boolean~) main::$3 ← (byte~) main::$2 != (byte) 0 + (byte~) main::$2 ← (byte) main::bits & (byte/word/signed word) 128 + (boolean~) main::$3 ← (byte~) main::$2 != (byte/signed byte/word/signed word) 0 (boolean~) main::$4 ← ! (boolean~) main::$3 if((boolean~) main::$4) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 *((byte*) main::sc) ← (byte) main::c (byte*) main::sc ← ++ (byte*) main::sc - (byte~) main::$5 ← (byte) main::bits << (byte) 1 + (byte~) main::$5 ← (byte) main::bits << (byte/signed byte/word/signed word) 1 (byte) main::bits ← (byte~) main::$5 (byte) main::x ← ++ (byte) main::x - (boolean~) main::$6 ← (byte) main::x != (byte) 8 + (boolean~) main::$6 ← (byte) main::x != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 (byte) main::c ← (byte) '*' to:main::@3 main::@5: scope:[main] from main::@3 - (byte*~) main::$7 ← (byte*) main::sc + (byte) 32 + (byte*~) main::$7 ← (byte*) main::sc + (byte/signed byte/word/signed word) 32 (byte*) main::sc ← (byte*~) main::$7 (byte) main::y ← ++ (byte) main::y - (boolean~) main::$8 ← (byte) main::y != (byte) 8 + (boolean~) main::$8 ← (byte) main::y != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -217,20 +217,20 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#2 ) asm { sei } - (byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte) 8 + (byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte/signed byte/word/signed word) 8 (byte*) main::CHAR_A#0 ← (byte*~) main::$0 - *((byte*) PROCPORT#1) ← (byte) 50 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (byte*) SCREEN#1 - (byte) main::y#0 ← (byte) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 ) @@ -239,7 +239,7 @@ main::@1: scope:[main] from main main::@5 (byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#2 ) (byte~) main::$1 ← (byte*) main::CHAR_A#1 *idx (byte) main::y#2 (byte) main::bits#0 ← (byte~) main::$1 - (byte) main::x#0 ← (byte) 0 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte*) PROCPORT#6 ← phi( main::@1/(byte*) PROCPORT#8 main::@3/(byte*) PROCPORT#5 ) @@ -249,8 +249,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::sc#5 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) (byte) main::c#0 ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - (boolean~) main::$3 ← (byte~) main::$2 != (byte) 0 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + (boolean~) main::$3 ← (byte~) main::$2 != (byte/signed byte/word/signed word) 0 (boolean~) main::$4 ← ! (boolean~) main::$3 if((boolean~) main::$4) goto main::@3 to:main::@4 @@ -264,10 +264,10 @@ main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@4/(byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte~) main::$5 ← (byte) main::bits#3 << (byte) 1 + (byte~) main::$5 ← (byte) main::bits#3 << (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (byte~) main::$5 (byte) main::x#1 ← ++ (byte) main::x#2 - (boolean~) main::$6 ← (byte) main::x#1 != (byte) 8 + (boolean~) main::$6 ← (byte) main::x#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 @@ -284,15 +284,15 @@ main::@5: scope:[main] from main::@3 (byte*) main::CHAR_A#2 ← phi( main::@3/(byte*) main::CHAR_A#3 ) (byte) main::y#3 ← phi( main::@3/(byte) main::y#4 ) (byte*) main::sc#4 ← phi( main::@3/(byte*) main::sc#1 ) - (byte*~) main::$7 ← (byte*) main::sc#4 + (byte) 32 + (byte*~) main::$7 ← (byte*) main::sc#4 + (byte/signed byte/word/signed word) 32 (byte*) main::sc#2 ← (byte*~) main::$7 (byte) main::y#1 ← ++ (byte) main::y#3 - (boolean~) main::$8 ← (byte) main::y#1 != (byte) 8 + (boolean~) main::$8 ← (byte) main::y#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 (byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -310,20 +310,20 @@ main::@return: scope:[main] from main::@6 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#2 ) asm { sei } - (byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte) 8 + (byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte/signed byte/word/signed word) 8 (byte*) main::CHAR_A#0 ← (byte*~) main::$0 - *((byte*) PROCPORT#1) ← (byte) 50 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (byte*) SCREEN#1 - (byte) main::y#0 ← (byte) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 ) @@ -332,7 +332,7 @@ main::@1: scope:[main] from main main::@5 (byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#2 ) (byte~) main::$1 ← (byte*) main::CHAR_A#1 *idx (byte) main::y#2 (byte) main::bits#0 ← (byte~) main::$1 - (byte) main::x#0 ← (byte) 0 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte*) PROCPORT#6 ← phi( main::@1/(byte*) PROCPORT#8 main::@3/(byte*) PROCPORT#5 ) @@ -342,8 +342,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::sc#5 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) (byte) main::c#0 ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - (boolean~) main::$3 ← (byte~) main::$2 != (byte) 0 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + (boolean~) main::$3 ← (byte~) main::$2 != (byte/signed byte/word/signed word) 0 (boolean~) main::$4 ← ! (boolean~) main::$3 if((boolean~) main::$4) goto main::@3 to:main::@4 @@ -357,10 +357,10 @@ main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@4/(byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte~) main::$5 ← (byte) main::bits#3 << (byte) 1 + (byte~) main::$5 ← (byte) main::bits#3 << (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (byte~) main::$5 (byte) main::x#1 ← ++ (byte) main::x#2 - (boolean~) main::$6 ← (byte) main::x#1 != (byte) 8 + (boolean~) main::$6 ← (byte) main::x#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 @@ -377,15 +377,15 @@ main::@5: scope:[main] from main::@3 (byte*) main::CHAR_A#2 ← phi( main::@3/(byte*) main::CHAR_A#3 ) (byte) main::y#3 ← phi( main::@3/(byte) main::y#4 ) (byte*) main::sc#4 ← phi( main::@3/(byte*) main::sc#1 ) - (byte*~) main::$7 ← (byte*) main::sc#4 + (byte) 32 + (byte*~) main::$7 ← (byte*) main::sc#4 + (byte/signed byte/word/signed word) 32 (byte*) main::sc#2 ← (byte*~) main::$7 (byte) main::y#1 ← ++ (byte) main::y#3 - (boolean~) main::$8 ← (byte) main::y#1 != (byte) 8 + (boolean~) main::$8 ← (byte) main::y#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 (byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -486,20 +486,20 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#2 ) asm { sei } - (byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte) 8 + (byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte/signed byte/word/signed word) 8 (byte*) main::CHAR_A#0 ← (byte*~) main::$0 - *((byte*) PROCPORT#1) ← (byte) 50 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (byte*) SCREEN#1 - (byte) main::y#0 ← (byte) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 ) @@ -508,7 +508,7 @@ main::@1: scope:[main] from main main::@5 (byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#2 ) (byte~) main::$1 ← (byte*) main::CHAR_A#1 *idx (byte) main::y#2 (byte) main::bits#0 ← (byte~) main::$1 - (byte) main::x#0 ← (byte) 0 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte*) PROCPORT#6 ← phi( main::@1/(byte*) PROCPORT#8 main::@3/(byte*) PROCPORT#5 ) @@ -518,8 +518,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::sc#5 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) (byte) main::c#0 ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - (boolean~) main::$3 ← (byte~) main::$2 != (byte) 0 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + (boolean~) main::$3 ← (byte~) main::$2 != (byte/signed byte/word/signed word) 0 (boolean~) main::$4 ← ! (boolean~) main::$3 if((boolean~) main::$4) goto main::@3 to:main::@4 @@ -533,10 +533,10 @@ main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@4/(byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte~) main::$5 ← (byte) main::bits#3 << (byte) 1 + (byte~) main::$5 ← (byte) main::bits#3 << (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (byte~) main::$5 (byte) main::x#1 ← ++ (byte) main::x#2 - (boolean~) main::$6 ← (byte) main::x#1 != (byte) 8 + (boolean~) main::$6 ← (byte) main::x#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 @@ -553,15 +553,15 @@ main::@5: scope:[main] from main::@3 (byte*) main::CHAR_A#2 ← phi( main::@3/(byte*) main::CHAR_A#3 ) (byte) main::y#3 ← phi( main::@3/(byte) main::y#4 ) (byte*) main::sc#4 ← phi( main::@3/(byte*) main::sc#1 ) - (byte*~) main::$7 ← (byte*) main::sc#4 + (byte) 32 + (byte*~) main::$7 ← (byte*) main::sc#4 + (byte/signed byte/word/signed word) 32 (byte*) main::sc#2 ← (byte*~) main::$7 (byte) main::y#1 ← ++ (byte) main::y#3 - (boolean~) main::$8 ← (byte) main::y#1 != (byte) 8 + (boolean~) main::$8 ← (byte) main::y#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 (byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -575,24 +575,24 @@ main::@return: scope:[main] from main::@6 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$4 ← (byte~) main::$2 == (byte) 0 from (boolean~) main::$3 ← (byte~) main::$2 != (byte) 0 +Inversing boolean not (boolean~) main::$4 ← (byte~) main::$2 == (byte/signed byte/word/signed word) 0 from (boolean~) main::$3 ← (byte~) main::$2 != (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#2 ) asm { sei } - (byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte) 8 + (byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte/signed byte/word/signed word) 8 (byte*) main::CHAR_A#0 ← (byte*~) main::$0 - *((byte*) PROCPORT#1) ← (byte) 50 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (byte*) SCREEN#1 - (byte) main::y#0 ← (byte) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 ) @@ -601,7 +601,7 @@ main::@1: scope:[main] from main main::@5 (byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#2 ) (byte~) main::$1 ← (byte*) main::CHAR_A#1 *idx (byte) main::y#2 (byte) main::bits#0 ← (byte~) main::$1 - (byte) main::x#0 ← (byte) 0 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte*) PROCPORT#6 ← phi( main::@1/(byte*) PROCPORT#8 main::@3/(byte*) PROCPORT#5 ) @@ -611,8 +611,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::sc#5 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) (byte) main::c#0 ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - (boolean~) main::$4 ← (byte~) main::$2 == (byte) 0 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + (boolean~) main::$4 ← (byte~) main::$2 == (byte/signed byte/word/signed word) 0 if((boolean~) main::$4) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 @@ -625,10 +625,10 @@ main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@4/(byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte~) main::$5 ← (byte) main::bits#3 << (byte) 1 + (byte~) main::$5 ← (byte) main::bits#3 << (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (byte~) main::$5 (byte) main::x#1 ← ++ (byte) main::x#2 - (boolean~) main::$6 ← (byte) main::x#1 != (byte) 8 + (boolean~) main::$6 ← (byte) main::x#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 @@ -645,15 +645,15 @@ main::@5: scope:[main] from main::@3 (byte*) main::CHAR_A#2 ← phi( main::@3/(byte*) main::CHAR_A#3 ) (byte) main::y#3 ← phi( main::@3/(byte) main::y#4 ) (byte*) main::sc#4 ← phi( main::@3/(byte*) main::sc#1 ) - (byte*~) main::$7 ← (byte*) main::sc#4 + (byte) 32 + (byte*~) main::$7 ← (byte*) main::sc#4 + (byte/signed byte/word/signed word) 32 (byte*) main::sc#2 ← (byte*~) main::$7 (byte) main::y#1 ← ++ (byte) main::y#3 - (boolean~) main::$8 ← (byte) main::y#1 != (byte) 8 + (boolean~) main::$8 ← (byte) main::y#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 (byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -688,16 +688,16 @@ Alias (byte*) main::sc#2 = (byte*~) main::$7 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } - (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte) 8 - *((byte*) PROCPORT#0) ← (byte) 50 + (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte/signed byte/word/signed word) 8 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (byte*) SCREEN#0 - (byte) main::y#0 ← (byte) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#0 main::@5/(byte*) PROCPORT#2 ) @@ -705,7 +705,7 @@ main::@1: scope:[main] from main main::@5 (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@5/(byte) main::y#1 ) (byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#2 ) (byte) main::bits#0 ← (byte*) main::CHAR_A#1 *idx (byte) main::y#2 - (byte) main::x#0 ← (byte) 0 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte*) PROCPORT#6 ← phi( main::@1/(byte*) PROCPORT#8 main::@3/(byte*) PROCPORT#2 ) @@ -715,8 +715,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::sc#5 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) (byte) main::c#0 ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - (boolean~) main::$4 ← (byte~) main::$2 == (byte) 0 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + (boolean~) main::$4 ← (byte~) main::$2 == (byte/signed byte/word/signed word) 0 if((boolean~) main::$4) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 @@ -729,22 +729,22 @@ main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@4/(byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#3 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#3 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - (boolean~) main::$6 ← (byte) main::x#1 != (byte) 8 + (boolean~) main::$6 ← (byte) main::x#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 (byte) main::c#1 ← (byte) '*' to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#3 - (boolean~) main::$8 ← (byte) main::y#1 != (byte) 8 + (boolean~) main::$8 ← (byte) main::y#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -765,16 +765,16 @@ Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#6 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } - (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte) 8 - *((byte*) PROCPORT#0) ← (byte) 50 + (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte/signed byte/word/signed word) 8 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (byte*) SCREEN#0 - (byte) main::y#0 ← (byte) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#0 main::@5/(byte*) PROCPORT#2 ) @@ -782,7 +782,7 @@ main::@1: scope:[main] from main main::@5 (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@5/(byte) main::y#1 ) (byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#2 ) (byte) main::bits#0 ← (byte*) main::CHAR_A#1 *idx (byte) main::y#2 - (byte) main::x#0 ← (byte) 0 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte*) PROCPORT#2 ← phi( main::@1/(byte*) PROCPORT#8 main::@3/(byte*) PROCPORT#2 ) @@ -792,30 +792,30 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) (byte) main::c#0 ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - (boolean~) main::$4 ← (byte~) main::$2 == (byte) 0 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + (boolean~) main::$4 ← (byte~) main::$2 == (byte/signed byte/word/signed word) 0 if((boolean~) main::$4) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@4/(byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - (boolean~) main::$6 ← (byte) main::x#1 != (byte) 8 + (boolean~) main::$6 ← (byte) main::x#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 (byte) main::c#1 ← (byte) '*' to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#3 - (boolean~) main::$8 ← (byte) main::y#1 != (byte) 8 + (boolean~) main::$8 ← (byte) main::y#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -833,16 +833,16 @@ Self Phi Eliminated (byte*) PROCPORT#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } - (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte) 8 - *((byte*) PROCPORT#0) ← (byte) 50 + (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte/signed byte/word/signed word) 8 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (byte*) SCREEN#0 - (byte) main::y#0 ← (byte) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#0 main::@5/(byte*) PROCPORT#2 ) @@ -850,7 +850,7 @@ main::@1: scope:[main] from main main::@5 (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@5/(byte) main::y#1 ) (byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#2 ) (byte) main::bits#0 ← (byte*) main::CHAR_A#1 *idx (byte) main::y#2 - (byte) main::x#0 ← (byte) 0 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte*) PROCPORT#2 ← phi( main::@1/(byte*) PROCPORT#8 ) @@ -860,30 +860,30 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) (byte) main::c#0 ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - (boolean~) main::$4 ← (byte~) main::$2 == (byte) 0 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + (boolean~) main::$4 ← (byte~) main::$2 == (byte/signed byte/word/signed word) 0 if((boolean~) main::$4) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@4/(byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - (boolean~) main::$6 ← (byte) main::x#1 != (byte) 8 + (boolean~) main::$6 ← (byte) main::x#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 (byte) main::c#1 ← (byte) '*' to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#3 - (boolean~) main::$8 ← (byte) main::y#1 != (byte) 8 + (boolean~) main::$8 ← (byte) main::y#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -900,16 +900,16 @@ Redundant Phi (byte*) PROCPORT#2 (byte*) PROCPORT#8 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } - (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte) 8 - *((byte*) PROCPORT#0) ← (byte) 50 + (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte/signed byte/word/signed word) 8 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (byte*) SCREEN#0 - (byte) main::y#0 ← (byte) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#0 main::@5/(byte*) PROCPORT#8 ) @@ -917,37 +917,37 @@ main::@1: scope:[main] from main main::@5 (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@5/(byte) main::y#1 ) (byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#1 ) (byte) main::bits#0 ← (byte*) main::CHAR_A#1 *idx (byte) main::y#2 - (byte) main::x#0 ← (byte) 0 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte) main::x#2 ← phi( main::@1/(byte) main::x#0 main::@3/(byte) main::x#1 ) (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) (byte) main::c#0 ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - (boolean~) main::$4 ← (byte~) main::$2 == (byte) 0 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + (boolean~) main::$4 ← (byte~) main::$2 == (byte/signed byte/word/signed word) 0 if((boolean~) main::$4) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@4/(byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - (boolean~) main::$6 ← (byte) main::x#1 != (byte) 8 + (boolean~) main::$6 ← (byte) main::x#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$6) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 (byte) main::c#1 ← (byte) '*' to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#2 - (boolean~) main::$8 ← (byte) main::y#1 != (byte) 8 + (boolean~) main::$8 ← (byte) main::y#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT#8) ← (byte) 55 + *((byte*) PROCPORT#8) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -958,22 +958,22 @@ main::@return: scope:[main] from main::@6 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$4 if((byte~) main::$2==(byte) 0) goto main::@3 -Simple Condition (boolean~) main::$6 if((byte) main::x#1!=(byte) 8) goto main::@2 -Simple Condition (boolean~) main::$8 if((byte) main::y#1!=(byte) 8) goto main::@1 +Simple Condition (boolean~) main::$4 if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 +Simple Condition (boolean~) main::$6 if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 +Simple Condition (boolean~) main::$8 if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } - (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte) 8 - *((byte*) PROCPORT#0) ← (byte) 50 + (byte*) main::CHAR_A#0 ← (byte*) CHARGEN#0 + (byte/signed byte/word/signed word) 8 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (byte*) SCREEN#0 - (byte) main::y#0 ← (byte) 0 + (byte) main::y#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#0 main::@5/(byte*) PROCPORT#8 ) @@ -981,34 +981,34 @@ main::@1: scope:[main] from main main::@5 (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@5/(byte) main::y#1 ) (byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#1 ) (byte) main::bits#0 ← (byte*) main::CHAR_A#1 *idx (byte) main::y#2 - (byte) main::x#0 ← (byte) 0 + (byte) main::x#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte) main::x#2 ← phi( main::@1/(byte) main::x#0 main::@3/(byte) main::x#1 ) (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) (byte) main::c#0 ← (byte) '.' - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - if((byte~) main::$2==(byte) 0) goto main::@3 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) main::c#0 main::@4/(byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - if((byte) main::x#1!=(byte) 8) goto main::@2 + if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 (byte) main::c#1 ← (byte) '*' to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#2 - if((byte) main::y#1!=(byte) 8) goto main::@1 + if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT#8) ← (byte) 55 + *((byte*) PROCPORT#8) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1032,8 +1032,8 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @1 asm { sei } - (byte*) main::CHAR_A#0 ← (const byte*) CHARGEN#0 + (byte) 8 - *((const byte*) PROCPORT#0) ← (byte) 50 + (byte*) main::CHAR_A#0 ← (const byte*) CHARGEN#0 + (byte/signed byte/word/signed word) 8 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::sc#0 ← (const byte*) SCREEN#0 to:main::@1 main::@1: scope:[main] from main main::@5 @@ -1047,26 +1047,26 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::x#2 ← phi( main::@1/(const byte) main::x#0 main::@3/(byte) main::x#1 ) (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - if((byte~) main::$2==(byte) 0) goto main::@3 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(const byte) main::c#0 main::@4/(const byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - if((byte) main::x#1!=(byte) 8) goto main::@2 + if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#2 - if((byte) main::y#1!=(byte) 8) goto main::@1 + if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT#8) ← (byte) 55 + *((byte*) PROCPORT#8) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1085,7 +1085,7 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(const byte*) PROCPORT#0 main::@5/(byte*) PROCPORT#8 ) @@ -1098,26 +1098,26 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::x#2 ← phi( main::@1/(const byte) main::x#0 main::@3/(byte) main::x#1 ) (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - if((byte~) main::$2==(byte) 0) goto main::@3 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(const byte) main::c#0 main::@4/(const byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - if((byte) main::x#1!=(byte) 8) goto main::@2 + if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#2 - if((byte) main::y#1!=(byte) 8) goto main::@1 + if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT#8) ← (byte) 55 + *((byte*) PROCPORT#8) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1138,7 +1138,7 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) PROCPORT#8 ← phi( main/(const byte*) PROCPORT#0 ) @@ -1151,26 +1151,26 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::x#2 ← phi( main::@1/(const byte) main::x#0 main::@3/(byte) main::x#1 ) (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - if((byte~) main::$2==(byte) 0) goto main::@3 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(const byte) main::c#0 main::@4/(const byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - if((byte) main::x#1!=(byte) 8) goto main::@2 + if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#2 - if((byte) main::y#1!=(byte) 8) goto main::@1 + if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((byte*) PROCPORT#8) ← (byte) 55 + *((byte*) PROCPORT#8) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1189,7 +1189,7 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) main::sc#7 ← phi( main/(const byte*) main::sc#0 main::@5/(byte*) main::sc#2 ) @@ -1200,26 +1200,26 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::x#2 ← phi( main::@1/(const byte) main::x#0 main::@3/(byte) main::x#1 ) (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - if((byte~) main::$2==(byte) 0) goto main::@3 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(const byte) main::c#0 main::@4/(const byte) main::c#1 ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - if((byte) main::x#1!=(byte) 8) goto main::@2 + if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#2 - if((byte) main::y#1!=(byte) 8) goto main::@1 + if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1247,48 +1247,48 @@ Inlining constant with var siblings (const byte*) main::sc#0 Inlining constant with var siblings (const byte*) main::sc#0 Inlining constant with var siblings (const byte*) main::sc#0 Inlining constant with var siblings (const byte*) main::sc#0 -Constant inlined main::c#1 = (byte) '*' -Constant inlined main::x#0 = (byte) 0 -Constant inlined main::c#0 = (byte) '.' Constant inlined main::sc#0 = (const byte*) SCREEN#0 -Constant inlined main::y#0 = (byte) 0 +Constant inlined main::c#0 = (byte) '.' +Constant inlined main::x#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::y#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::c#1 = (byte) '*' Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) main::sc#7 ← phi( main/(const byte*) SCREEN#0 main::@5/(byte*) main::sc#2 ) - (byte) main::y#2 ← phi( main/(byte) 0 main::@5/(byte) main::y#1 ) + (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::y#1 ) (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - (byte) main::x#2 ← phi( main::@1/(byte) 0 main::@3/(byte) main::x#1 ) + (byte) main::x#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::x#1 ) (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - if((byte~) main::$2==(byte) 0) goto main::@3 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@4 main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) '.' main::@4/(byte) '*' ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - if((byte) main::x#1!=(byte) 8) goto main::@2 + if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@5 main::@4: scope:[main] from main::@2 to:main::@3 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#2 - if((byte) main::y#1!=(byte) 8) goto main::@1 + if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 to:main::@6 main::@6: scope:[main] from main::@5 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1306,9 +1306,9 @@ FINAL SYMBOL TABLE (byte*) CHARGEN (const byte*) CHARGEN#0 = (word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 = (byte) 1 +(const byte*) PROCPORT#0 = (byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) main() (byte~) main::$2 (label) main::@1 @@ -1319,7 +1319,7 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (byte*) main::CHAR_A -(const byte*) main::CHAR_A#0 = (const byte*) CHARGEN#0+(byte) 8 +(const byte*) main::CHAR_A#0 = (const byte*) CHARGEN#0+(byte/signed byte/word/signed word) 8 (byte) main::bits (byte) main::bits#0 (byte) main::bits#1 @@ -1351,21 +1351,21 @@ CONTROL FLOW GRAPH - PHI LIFTED @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:main::@1 main::@1: scope:[main] from main main::@7 (byte*) main::sc#7 ← phi( main/(const byte*) SCREEN#0 main::@7/(byte*~) main::sc#8 ) - (byte) main::y#2 ← phi( main/(byte) 0 main::@7/(byte~) main::y#7 ) + (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte~) main::y#7 ) (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 (byte~) main::bits#5 ← (byte) main::bits#0 (byte*~) main::sc#9 ← (byte*) main::sc#7 to:main::@2 main::@2: scope:[main] from main::@1 main::@8 - (byte) main::x#2 ← phi( main::@1/(byte) 0 main::@8/(byte~) main::x#5 ) + (byte) main::x#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@8/(byte~) main::x#5 ) (byte*) main::sc#3 ← phi( main::@1/(byte*~) main::sc#9 main::@8/(byte*~) main::sc#10 ) (byte) main::bits#2 ← phi( main::@1/(byte~) main::bits#5 main::@8/(byte~) main::bits#6 ) - (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 - if((byte~) main::$2==(byte) 0) goto main::@3 + (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 + if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@2 to:main::@3 @@ -1373,17 +1373,17 @@ main::@3: scope:[main] from main::@2 main::@4 (byte) main::c#2 ← phi( main::@2/(byte) '.' main::@4/(byte) '*' ) *((byte*) main::sc#3) ← (byte) main::c#2 (byte*) main::sc#1 ← ++ (byte*) main::sc#3 - (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 + (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← ++ (byte) main::x#2 - if((byte) main::x#1!=(byte) 8) goto main::@8 + if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@8 to:main::@5 main::@5: scope:[main] from main::@3 - (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 + (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 (byte) main::y#1 ← ++ (byte) main::y#2 - if((byte) main::y#1!=(byte) 8) goto main::@7 + if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@7 to:main::@6 main::@6: scope:[main] from main::@5 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1425,21 +1425,21 @@ CONTROL FLOW GRAPH - LIVE RANGES FOUND @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] + [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] to:main::@1 main::@1: scope:[main] from main main::@7 [3] (byte*) main::sc#7 ← phi( main/(const byte*) SCREEN#0 main::@7/(byte*~) main::sc#8 ) [ main::y#2 main::sc#7 ] - [3] (byte) main::y#2 ← phi( main/(byte) 0 main::@7/(byte~) main::y#7 ) [ main::y#2 main::sc#7 ] + [3] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte~) main::y#7 ) [ main::y#2 main::sc#7 ] [4] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#7 main::bits#0 ] [5] (byte~) main::bits#5 ← (byte) main::bits#0 [ main::y#2 main::sc#7 main::bits#5 ] [6] (byte*~) main::sc#9 ← (byte*) main::sc#7 [ main::y#2 main::bits#5 main::sc#9 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@8 - [7] (byte) main::x#2 ← phi( main::@1/(byte) 0 main::@8/(byte~) main::x#5 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] + [7] (byte) main::x#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@8/(byte~) main::x#5 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] [7] (byte*) main::sc#3 ← phi( main::@1/(byte*~) main::sc#9 main::@8/(byte*~) main::sc#10 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] [7] (byte) main::bits#2 ← phi( main::@1/(byte~) main::bits#5 main::@8/(byte~) main::bits#6 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] - [8] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] - [9] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] + [8] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] + [9] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] to:main::@4 main::@4: scope:[main] from main::@2 to:main::@3 @@ -1447,17 +1447,17 @@ main::@3: scope:[main] from main::@2 main::@4 [10] (byte) main::c#2 ← phi( main::@2/(byte) '.' main::@4/(byte) '*' ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::c#2 ] [11] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] [12] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] - [13] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::sc#1 main::bits#1 ] + [13] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::sc#1 main::bits#1 ] [14] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::sc#1 main::bits#1 main::x#1 ] - [15] if((byte) main::x#1!=(byte) 8) goto main::@8 [ main::y#2 main::sc#1 main::bits#1 main::x#1 ] + [15] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@8 [ main::y#2 main::sc#1 main::bits#1 main::x#1 ] to:main::@5 main::@5: scope:[main] from main::@3 - [16] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] + [16] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] [17] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::sc#2 main::y#1 ] - [18] if((byte) main::y#1!=(byte) 8) goto main::@7 [ main::sc#2 main::y#1 ] + [18] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@7 [ main::sc#2 main::y#1 ] to:main::@6 main::@6: scope:[main] from main::@5 - [19] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] + [19] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1507,19 +1507,19 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] + [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] to:main::@1 main::@1: scope:[main] from main main::@5 [3] (byte*) main::sc#7 ← phi( main/(const byte*) SCREEN#0 main::@5/(byte*) main::sc#2 ) [ main::y#2 main::sc#7 ] - [3] (byte) main::y#2 ← phi( main/(byte) 0 main::@5/(byte) main::y#1 ) [ main::y#2 main::sc#7 ] + [3] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::y#1 ) [ main::y#2 main::sc#7 ] [4] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#7 main::bits#0 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - [5] (byte) main::x#2 ← phi( main::@1/(byte) 0 main::@3/(byte) main::x#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] + [5] (byte) main::x#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::x#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] [5] (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] [5] (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] - [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] - [7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] + [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] + [7] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] to:main::@4 main::@4: scope:[main] from main::@2 to:main::@3 @@ -1527,17 +1527,17 @@ main::@3: scope:[main] from main::@2 main::@4 [8] (byte) main::c#2 ← phi( main::@2/(byte) '.' main::@4/(byte) '*' ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::c#2 ] [9] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] [10] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] - [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] + [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] [12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] - [13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] + [13] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] to:main::@5 main::@5: scope:[main] from main::@3 - [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] + [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] [15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ] - [16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ] + [16] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 [ main::y#1 main::sc#2 ] to:main::@6 main::@6: scope:[main] from main::@5 - [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] + [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1553,19 +1553,19 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) + [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@5 [3] (byte*) main::sc#7 ← phi( main/(const byte*) SCREEN#0 main::@5/(byte*) main::sc#2 ) [ main::y#2 main::sc#7 ] ( main:0 [ main::y#2 main::sc#7 ] ) - [3] (byte) main::y#2 ← phi( main/(byte) 0 main::@5/(byte) main::y#1 ) [ main::y#2 main::sc#7 ] ( main:0 [ main::y#2 main::sc#7 ] ) + [3] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::y#1 ) [ main::y#2 main::sc#7 ] ( main:0 [ main::y#2 main::sc#7 ] ) [4] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#7 main::bits#0 ] ( main:0 [ main::y#2 main::sc#7 main::bits#0 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - [5] (byte) main::x#2 ← phi( main::@1/(byte) 0 main::@3/(byte) main::x#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) + [5] (byte) main::x#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::x#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) [5] (byte*) main::sc#3 ← phi( main::@1/(byte*) main::sc#7 main::@3/(byte*) main::sc#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) [5] (byte) main::bits#2 ← phi( main::@1/(byte) main::bits#0 main::@3/(byte) main::bits#1 ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) - [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) - [7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) + [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) + [7] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) to:main::@4 main::@4: scope:[main] from main::@2 to:main::@3 @@ -1573,17 +1573,17 @@ main::@3: scope:[main] from main::@2 main::@4 [8] (byte) main::c#2 ← phi( main::@2/(byte) '.' main::@4/(byte) '*' ) [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::c#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::c#2 ] ) [9] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) [10] (byte*) main::sc#1 ← ++ (byte*) main::sc#3 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] ( main:0 [ main::y#2 main::bits#2 main::x#2 main::sc#1 ] ) - [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) + [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) [12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) - [13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) + [13] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) to:main::@5 main::@5: scope:[main] from main::@3 - [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) + [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) [15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) - [16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) + [16] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) to:main::@6 main::@6: scope:[main] from main::@5 - [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) + [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) asm { cli } to:main::@return main::@return: scope:[main] from main::@6 @@ -1593,15 +1593,15 @@ main::@return: scope:[main] from main::@6 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@4 dominated by @1 @begin main::@2 main::@1 main::@4 main -main::@3 dominated by @1 @begin main::@2 main::@1 main::@3 main -main::@5 dominated by @1 @begin main::@2 main::@1 main::@3 main::@5 main -main::@6 dominated by @1 @begin main::@2 main::@1 main::@3 main::@6 main::@5 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main::@3 main::@6 main::@5 main +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@4 dominated by @1 @begin main::@1 main::@2 main main::@4 +main::@3 dominated by @1 @begin main::@1 main::@2 main main::@3 +main::@5 dominated by @1 @begin main::@1 main::@2 main main::@5 main::@3 +main::@6 dominated by @1 @begin main::@1 main::@2 main main::@5 main::@6 main::@3 +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main main::@5 main::@6 main::@3 Found back edge: Loop head: main::@2 tails: main::@3 blocks: null Found back edge: Loop head: main::@1 tails: main::@5 blocks: null @@ -1695,7 +1695,7 @@ main: { .label c = 7 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -1705,7 +1705,7 @@ main: { sta sc lda #>SCREEN sta sc+1 - //SEG11 [3] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG11 [3] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 @@ -1722,7 +1722,7 @@ main: { sta bits //SEG17 [5] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [5] phi (byte) main::x#2 = (byte) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG18 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #0 sta x //SEG19 [5] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy @@ -1736,11 +1736,11 @@ main: { jmp b2 //SEG25 main::@2 b2: - //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- zpby1=zpby2_band_coby1 + //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- zpby1=zpby2_band_coby1 lda bits and #$80 sta _2 - //SEG27 [7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- zpby1_eq_0_then_la1 + //SEG27 [7] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- zpby1_eq_0_then_la1 lda _2 beq b3_from_b2 jmp b4 @@ -1769,18 +1769,18 @@ main: { bne !+ inc sc+1 !: - //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 + //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 asl bits //SEG37 [12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG38 [13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG38 [13] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- zpby1_neq_coby1_then_la1 lda x cmp #8 bne b2_from_b3 jmp b5 //SEG39 main::@5 b5: - //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$20 @@ -1790,14 +1790,14 @@ main: { !: //SEG41 [15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1=_inc_zpby1 inc y - //SEG42 [16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG42 [16] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #8 bne b1_from_b5 jmp b6 //SEG43 main::@6 b6: - //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG45 asm { cli } @@ -1810,8 +1810,8 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) always clobbers reg byte a +Statement [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::y#2 main::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::x#2 main::x#1 ] @@ -1819,14 +1819,14 @@ Statement [9] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits# Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::y#2 main::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ main::x#2 main::x#1 ] -Statement [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a -Statement [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a +Statement [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) always clobbers reg byte a Statement [4] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#7 main::bits#0 ] ( main:0 [ main::y#2 main::sc#7 main::bits#0 ] ) always clobbers reg byte a -Statement [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) always clobbers reg byte a +Statement [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) always clobbers reg byte a Statement [9] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) always clobbers reg byte y -Statement [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a -Statement [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a +Statement [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::y#2 main::y#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_PTR_BYTE:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] : zp ZP_PTR_BYTE:4 , @@ -1838,12 +1838,12 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 202: zp ZP_BYTE:8 [ main::$2 ] 180.36: zp ZP_BYTE:6 [ main::x#2 main::x#1 ] 141.67: zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] 134.38: zp ZP_PTR_BYTE:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] 101: zp ZP_BYTE:7 [ main::c#2 ] 19.25: zp ZP_BYTE:2 [ main::y#2 main::y#1 ] Uplift Scope [] -Uplifting [main] best 7259 combination reg byte a [ main::$2 ] reg byte x [ main::x#2 main::x#1 ] zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] zp ZP_PTR_BYTE:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] reg byte a [ main::c#2 ] zp ZP_BYTE:2 [ main::y#2 main::y#1 ] -Uplifting [] best 7259 combination +Uplifting [main] best 7379 combination reg byte a [ main::$2 ] reg byte x [ main::x#2 main::x#1 ] zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] zp ZP_PTR_BYTE:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] reg byte a [ main::c#2 ] zp ZP_BYTE:2 [ main::y#2 main::y#1 ] +Uplifting [] best 7379 combination Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] -Uplifting [main] best 7259 combination zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] +Uplifting [main] best 7379 combination zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::y#2 main::y#1 ] -Uplifting [main] best 7259 combination zp ZP_BYTE:2 [ main::y#2 main::y#1 ] +Uplifting [main] best 7379 combination zp ZP_BYTE:2 [ main::y#2 main::y#1 ] Removing instruction jmp b1 Removing instruction jmp bend Removing instruction jmp b1 @@ -1879,7 +1879,7 @@ main: { .label y = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -1889,7 +1889,7 @@ main: { sta sc lda #>SCREEN sta sc+1 - //SEG11 [3] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG11 [3] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 @@ -1905,7 +1905,7 @@ main: { sta bits //SEG17 [5] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [5] phi (byte) main::x#2 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG18 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 [5] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy //SEG20 [5] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy @@ -1917,10 +1917,10 @@ main: { //SEG24 [5] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy //SEG25 main::@2 b2: - //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 + //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 lda bits and #$80 - //SEG27 [7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 + //SEG27 [7] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG28 main::@4 @@ -1944,16 +1944,16 @@ main: { bne !+ inc sc+1 !: - //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 + //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 asl bits //SEG37 [12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby=_inc_xby inx - //SEG38 [13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 + //SEG38 [13] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2_from_b3 //SEG39 main::@5 b5: - //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$20 @@ -1963,13 +1963,13 @@ main: { !: //SEG41 [15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1=_inc_zpby1 inc y - //SEG42 [16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG42 [16] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #8 bne b1_from_b5 //SEG43 main::@6 b6: - //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG45 asm { cli } @@ -2011,7 +2011,7 @@ main: { .label y = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -2021,7 +2021,7 @@ main: { sta sc lda #>SCREEN sta sc+1 - //SEG11 [3] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG11 [3] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 @@ -2036,7 +2036,7 @@ main: { sta bits //SEG17 [5] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [5] phi (byte) main::x#2 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG18 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 [5] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy //SEG20 [5] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy @@ -2047,10 +2047,10 @@ main: { //SEG24 [5] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy //SEG25 main::@2 b2: - //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 + //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 lda bits and #$80 - //SEG27 [7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 + //SEG27 [7] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG28 main::@4 @@ -2073,16 +2073,16 @@ main: { bne !+ inc sc+1 !: - //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 + //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 asl bits //SEG37 [12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby=_inc_xby inx - //SEG38 [13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 + //SEG38 [13] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG39 main::@5 b5: - //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$20 @@ -2092,13 +2092,13 @@ main: { !: //SEG41 [15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1=_inc_zpby1 inc y - //SEG42 [16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG42 [16] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #8 bne b1 //SEG43 main::@6 b6: - //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG45 asm { cli } @@ -2140,7 +2140,7 @@ main: { .label y = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -2149,7 +2149,7 @@ main: { sta sc lda #>SCREEN sta sc+1 - //SEG11 [3] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG11 [3] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 @@ -2163,7 +2163,7 @@ main: { lda CHAR_A,x sta bits //SEG17 [5] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG18 [5] phi (byte) main::x#2 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG18 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 [5] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy //SEG20 [5] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy @@ -2174,10 +2174,10 @@ main: { //SEG24 [5] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy //SEG25 main::@2 b2: - //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 + //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 lda bits and #$80 - //SEG27 [7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 + //SEG27 [7] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG28 main::@4 @@ -2199,15 +2199,15 @@ main: { bne !+ inc sc+1 !: - //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 + //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 asl bits //SEG37 [12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby=_inc_xby inx - //SEG38 [13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 + //SEG38 [13] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG39 main::@5 - //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$20 @@ -2217,12 +2217,12 @@ main: { !: //SEG41 [15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1=_inc_zpby1 inc y - //SEG42 [16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG42 [16] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #8 bne b1 //SEG43 main::@6 - //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG45 asm { cli } @@ -2257,7 +2257,7 @@ main: { .label y = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -2266,7 +2266,7 @@ main: { sta sc lda #>SCREEN sta sc+1 - //SEG11 [3] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG11 [3] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta y //SEG12 [3] phi from main::@5 to main::@1 [phi:main::@5->main::@1] @@ -2279,7 +2279,7 @@ main: { lda CHAR_A,x sta bits //SEG17 [5] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG18 [5] phi (byte) main::x#2 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG18 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 [5] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy //SEG20 [5] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy @@ -2289,10 +2289,10 @@ main: { //SEG24 [5] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy //SEG25 main::@2 b2: - //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 + //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 lda bits and #$80 - //SEG27 [7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 + //SEG27 [7] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG28 main::@4 @@ -2314,15 +2314,15 @@ main: { bne !+ inc sc+1 !: - //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 + //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 asl bits //SEG37 [12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby=_inc_xby inx - //SEG38 [13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 + //SEG38 [13] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG39 main::@5 - //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$20 @@ -2332,12 +2332,12 @@ main: { !: //SEG41 [15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1=_inc_zpby1 inc y - //SEG42 [16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG42 [16] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #8 bne b1 //SEG43 main::@6 - //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG45 asm { cli } @@ -2354,9 +2354,9 @@ FINAL SYMBOL TABLE (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = (word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte) 1 +(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (byte~) main::$2 reg byte a 202.0 (label) main::@1 @@ -2367,7 +2367,7 @@ FINAL SYMBOL TABLE (label) main::@6 (label) main::@return (byte*) main::CHAR_A -(const byte*) main::CHAR_A#0 CHAR_A = (const byte*) CHARGEN#0+(byte) 8 +(const byte*) main::CHAR_A#0 CHAR_A = (const byte*) CHARGEN#0+(byte/signed byte/word/signed word) 8 (byte) main::bits (byte) main::bits#0 bits zp ZP_BYTE:3 22.0 (byte) main::bits#1 bits zp ZP_BYTE:3 67.33333333333333 @@ -2415,7 +2415,7 @@ main: { .label y = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -2424,7 +2424,7 @@ main: { sta sc lda #>SCREEN sta sc+1 - //SEG11 [3] phi (byte) main::y#2 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG11 [3] phi (byte) main::y#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta y //SEG12 [3] phi from main::@5 to main::@1 [phi:main::@5->main::@1] @@ -2437,7 +2437,7 @@ main: { lda CHAR_A,x sta bits //SEG17 [5] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG18 [5] phi (byte) main::x#2 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG18 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 [5] phi (byte*) main::sc#3 = (byte*) main::sc#7 [phi:main::@1->main::@2#1] -- register_copy //SEG20 [5] phi (byte) main::bits#2 = (byte) main::bits#0 [phi:main::@1->main::@2#2] -- register_copy @@ -2447,10 +2447,10 @@ main: { //SEG24 [5] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy //SEG25 main::@2 b2: - //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 + //SEG26 [6] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- aby=zpby1_band_coby1 lda bits and #$80 - //SEG27 [7] if((byte~) main::$2==(byte) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 + //SEG27 [7] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:0 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG28 main::@4 @@ -2472,15 +2472,15 @@ main: { bne !+ inc sc+1 !: - //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 + //SEG36 [11] (byte) main::bits#1 ← (byte) main::bits#2 << (byte/signed byte/word/signed word) 1 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ( main:0 [ main::y#2 main::x#2 main::bits#1 main::sc#1 ] ) -- zpby1=zpby1_rol_1 asl bits //SEG37 [12] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby=_inc_xby inx - //SEG38 [13] if((byte) main::x#1!=(byte) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 + //SEG38 [13] if((byte) main::x#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ( main:0 [ main::y#2 main::bits#1 main::sc#1 main::x#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG39 main::@5 - //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG40 [14] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:0 [ main::y#2 main::sc#2 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$20 @@ -2490,12 +2490,12 @@ main: { !: //SEG41 [15] (byte) main::y#1 ← ++ (byte) main::y#2 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1=_inc_zpby1 inc y - //SEG42 [16] if((byte) main::y#1!=(byte) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG42 [16] if((byte) main::y#1!=(byte/signed byte/word/signed word) 8) goto main::@1 [ main::y#1 main::sc#2 ] ( main:0 [ main::y#1 main::sc#2 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #8 bne b1 //SEG43 main::@6 - //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG44 [17] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG45 asm { cli } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym b/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym index fb6cbe8df..99cd38be8 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym @@ -4,9 +4,9 @@ (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = (word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte) 1 +(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (byte~) main::$2 reg byte a 202.0 (label) main::@1 @@ -17,7 +17,7 @@ (label) main::@6 (label) main::@return (byte*) main::CHAR_A -(const byte*) main::CHAR_A#0 CHAR_A = (const byte*) CHARGEN#0+(byte) 8 +(const byte*) main::CHAR_A#0 CHAR_A = (const byte*) CHARGEN#0+(byte/signed byte/word/signed word) 8 (byte) main::bits (byte) main::bits#0 bits zp ZP_BYTE:3 22.0 (byte) main::bits#1 bits zp ZP_BYTE:3 67.33333333333333 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.cfg b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.cfg index c489b41a1..ea2d6074d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.cfg @@ -8,11 +8,11 @@ main: scope:[main] from @3 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@5 [7] call line param-assignment [ ] ( main:0 [ ] ) @@ -24,10 +24,10 @@ main::@return: scope:[main] from main::@5 [9] return [ ] ( main:0 [ ] ) to:@return line: scope:[line] from main::@2 - [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) + [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) to:line::@2 line::@2: scope:[line] from line line::@8 - [11] (byte) line::x#2 ← phi( line/(byte) 0 line::@8/(byte) line::x#1 ) [ line::x#2 ] ( main:0::line:7 [ line::x#2 ] ) + [11] (byte) line::x#2 ← phi( line/(byte/signed byte/word/signed word) 0 line::@8/(byte) line::x#1 ) [ line::x#2 ] ( main:0::line:7 [ line::x#2 ] ) [12] (byte) plot::x#1 ← (byte) line::x#2 [ line::x#2 plot::x#1 ] ( main:0::line:7 [ line::x#2 plot::x#1 ] ) [13] call plot param-assignment [ line::x#2 ] ( main:0::line:7 [ line::x#2 ] ) to:line::@8 @@ -42,10 +42,10 @@ line::@1: scope:[line] from line [17] call plot param-assignment [ ] ( main:0::line:7 [ ] ) to:line::@return plot: scope:[plot] from line::@1 line::@2 - [18] (byte) plot::x#2 ← phi( line::@1/(byte) 0 line::@2/(byte) plot::x#1 ) [ plot::x#2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::x#2 ] main:0::line:7::plot:17 [ plot::x#2 ] ) + [18] (byte) plot::x#2 ← phi( line::@1/(byte/signed byte/word/signed word) 0 line::@2/(byte) plot::x#1 ) [ plot::x#2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::x#2 ] main:0::line:7::plot:17 [ plot::x#2 ] ) [19] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 ] main:0::line:7::plot:17 [ plot::idx#0 ] ) [20] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$1 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$1 ] ) - [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) + [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) [22] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:0::line:7::plot:13 [ line::x#2 ] main:0::line:7::plot:17 [ ] ) to:plot::@return plot::@return: scope:[plot] from plot diff --git a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.log b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.log index 46b39b624..30559a135 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.log @@ -28,18 +28,18 @@ void plot(byte x) { Adding pre/post-modifier (byte) line::x ← ++ (byte) line::x PROGRAM - (byte[]) plots ← (word) 4096 - (byte*) SCREEN ← (word) 1024 + (byte[]) plots ← (word/signed word) 4096 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: *((byte[]) plots + (byte) main::i) ← (byte) main::i - *((byte*) SCREEN + (byte) main::i) ← (byte) 0 + *((byte*) SCREEN + (byte) main::i) ← (byte/signed byte/word/signed word) 0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 40 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 main::@2: - (void~) main::$1 ← call line (byte) 0 (byte) 10 + (void~) main::$1 ← call line (byte/signed byte/word/signed word) 0 (byte/signed byte/word/signed word) 10 if(true) goto main::@2 main::@return: return @@ -65,7 +65,7 @@ proc (void()) plot((byte) plot::x) (byte~) plot::$0 ← (byte[]) plots *idx (byte) plot::x (byte) plot::idx ← (byte~) plot::$0 (byte~) plot::$1 ← (byte*) SCREEN *idx (byte) plot::idx - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$2 plot::@return: return @@ -105,23 +105,23 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots ← (word) 4096 - (byte*) SCREEN ← (word) 1024 + (byte[]) plots ← (word/signed word) 4096 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 *((byte[]) plots + (byte) main::i) ← (byte) main::i - *((byte*) SCREEN + (byte) main::i) ← (byte) 0 + *((byte*) SCREEN + (byte) main::i) ← (byte/signed byte/word/signed word) 0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 40 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 - (void~) main::$1 ← call line (byte) 0 (byte) 10 + (void~) main::$1 ← call line (byte/signed byte/word/signed word) 0 (byte/signed byte/word/signed word) 10 if(true) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 @@ -163,7 +163,7 @@ plot: scope:[plot] from (byte~) plot::$0 ← (byte[]) plots *idx (byte) plot::x (byte) plot::idx ← (byte~) plot::$0 (byte~) plot::$1 ← (byte*) SCREEN *idx (byte) plot::idx - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -183,21 +183,21 @@ Removing empty block line::@6 Removing empty block @2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots ← (word) 4096 - (byte*) SCREEN ← (word) 1024 + (byte[]) plots ← (word/signed word) 4096 + (byte*) SCREEN ← (word/signed word) 1024 to:@3 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 *((byte[]) plots + (byte) main::i) ← (byte) main::i - *((byte*) SCREEN + (byte) main::i) ← (byte) 0 + *((byte*) SCREEN + (byte) main::i) ← (byte/signed byte/word/signed word) 0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 40 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - (void~) main::$1 ← call line (byte) 0 (byte) 10 + (void~) main::$1 ← call line (byte/signed byte/word/signed word) 0 (byte/signed byte/word/signed word) 10 if(true) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -227,7 +227,7 @@ plot: scope:[plot] from (byte~) plot::$0 ← (byte[]) plots *idx (byte) plot::x (byte) plot::idx ← (byte~) plot::$0 (byte~) plot::$1 ← (byte*) SCREEN *idx (byte) plot::idx - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -242,22 +242,22 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte[]) plots ← (word) 4096 - (byte*) SCREEN ← (word) 1024 + (byte[]) plots ← (word/signed word) 4096 + (byte*) SCREEN ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 *((byte[]) plots + (byte) main::i) ← (byte) main::i - *((byte*) SCREEN + (byte) main::i) ← (byte) 0 + *((byte*) SCREEN + (byte) main::i) ← (byte/signed byte/word/signed word) 0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 40 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 - (byte) line::x0 ← (byte) 0 - (byte) line::x1 ← (byte) 10 + (byte) line::x0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -296,7 +296,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte~) plot::$0 ← (byte[]) plots *idx (byte) plot::x (byte) plot::idx ← (byte~) plot::$0 (byte~) plot::$1 ← (byte*) SCREEN *idx (byte) plot::idx - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -316,29 +316,29 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[]) plots#0 ← (word) 4096 - (byte*) SCREEN#0 ← (word) 1024 + (byte[]) plots#0 ← (word/signed word) 4096 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) (byte[]) plots#3 ← phi( @3/(byte[]) plots#6 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#3 main::@1/(byte*) SCREEN#1 ) (byte[]) plots#1 ← phi( main/(byte[]) plots#3 main::@1/(byte[]) plots#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte[]) plots#1 + (byte) main::i#2) ← (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) 0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 40 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#1 main::@5/(byte*) SCREEN#11 ) (byte[]) plots#10 ← phi( main::@1/(byte[]) plots#1 main::@5/(byte[]) plots#11 ) - (byte) line::x0#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 10 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -401,7 +401,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte~) plot::$0 ← (byte[]) plots#2 *idx (byte) plot::x#2 (byte) plot::idx#0 ← (byte~) plot::$0 (byte~) plot::$1 ← (byte*) SCREEN#2 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -418,29 +418,29 @@ plot::@return: scope:[plot] from plot CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte[]) plots#0 ← (word) 4096 - (byte*) SCREEN#0 ← (word) 1024 + (byte[]) plots#0 ← (word/signed word) 4096 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) (byte[]) plots#3 ← phi( @3/(byte[]) plots#6 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#3 main::@1/(byte*) SCREEN#1 ) (byte[]) plots#1 ← phi( main/(byte[]) plots#3 main::@1/(byte[]) plots#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte[]) plots#1 + (byte) main::i#2) ← (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) 0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 40 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#1 main::@5/(byte*) SCREEN#11 ) (byte[]) plots#10 ← phi( main::@1/(byte[]) plots#1 main::@5/(byte[]) plots#11 ) - (byte) line::x0#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 10 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -503,7 +503,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte~) plot::$0 ← (byte[]) plots#2 *idx (byte) plot::x#2 (byte) plot::idx#0 ← (byte~) plot::$0 (byte~) plot::$1 ← (byte*) SCREEN#2 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -602,29 +602,29 @@ Culled Empty Block (label) @4 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word) 4096 - (byte*) SCREEN#0 ← (word) 1024 + (byte[]) plots#0 ← (word/signed word) 4096 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) (byte[]) plots#3 ← phi( @3/(byte[]) plots#6 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#3 main::@1/(byte*) SCREEN#1 ) (byte[]) plots#1 ← phi( main/(byte[]) plots#3 main::@1/(byte[]) plots#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte[]) plots#1 + (byte) main::i#2) ← (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) 0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 40 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#1 main::@5/(byte*) SCREEN#11 ) (byte[]) plots#10 ← phi( main::@1/(byte[]) plots#1 main::@5/(byte[]) plots#11 ) - (byte) line::x0#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 10 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -685,7 +685,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte~) plot::$0 ← (byte[]) plots#2 *idx (byte) plot::x#2 (byte) plot::idx#0 ← (byte~) plot::$0 (byte~) plot::$1 ← (byte*) SCREEN#2 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -702,29 +702,29 @@ Inversing boolean not (boolean~) line::$1 ← (byte) line::x0#1 >= (byte) line:: Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word) 4096 - (byte*) SCREEN#0 ← (word) 1024 + (byte[]) plots#0 ← (word/signed word) 4096 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) (byte[]) plots#3 ← phi( @3/(byte[]) plots#6 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#3 main::@1/(byte*) SCREEN#1 ) (byte[]) plots#1 ← phi( main/(byte[]) plots#3 main::@1/(byte[]) plots#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte[]) plots#1 + (byte) main::i#2) ← (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) 0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 40 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#1 main::@5/(byte*) SCREEN#11 ) (byte[]) plots#10 ← phi( main::@1/(byte[]) plots#1 main::@5/(byte[]) plots#11 ) - (byte) line::x0#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 10 + (byte) line::x0#0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -784,7 +784,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte~) plot::$0 ← (byte[]) plots#2 *idx (byte) plot::x#2 (byte) plot::idx#0 ← (byte~) plot::$0 (byte~) plot::$1 ← (byte*) SCREEN#2 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -813,27 +813,27 @@ Alias (byte) plot::idx#0 = (byte~) plot::$0 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word) 4096 - (byte*) SCREEN#0 ← (word) 1024 + (byte[]) plots#0 ← (word/signed word) 4096 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 main::@1/(byte*) SCREEN#1 ) (byte[]) plots#1 ← phi( main/(byte[]) plots#0 main::@1/(byte[]) plots#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte[]) plots#1 + (byte) main::i#2) ← (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) 0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 40 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#1 main::@5/(byte*) SCREEN#10 ) (byte[]) plots#10 ← phi( main::@1/(byte[]) plots#1 main::@5/(byte[]) plots#10 ) - (byte) line::x#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 10 + (byte) line::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -874,7 +874,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte[]) plots#2 ← phi( line::@1/(byte[]) plots#10 line::@2/(byte[]) plots#5 ) (byte) plot::idx#0 ← (byte[]) plots#2 *idx (byte) plot::x#2 (byte~) plot::$1 ← (byte*) SCREEN#2 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -897,27 +897,27 @@ Self Phi Eliminated (byte*) SCREEN#5 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word) 4096 - (byte*) SCREEN#0 ← (word) 1024 + (byte[]) plots#0 ← (word/signed word) 4096 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 ) (byte[]) plots#1 ← phi( main/(byte[]) plots#0 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte[]) plots#1 + (byte) main::i#2) ← (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) 0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 40 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#1 ) (byte[]) plots#10 ← phi( main::@1/(byte[]) plots#1 ) - (byte) line::x#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 10 + (byte) line::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -958,7 +958,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte[]) plots#2 ← phi( line::@1/(byte[]) plots#10 line::@2/(byte[]) plots#5 ) (byte) plot::idx#0 ← (byte[]) plots#2 *idx (byte) plot::x#2 (byte~) plot::$1 ← (byte*) SCREEN#2 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -979,23 +979,23 @@ Redundant Phi (byte*) SCREEN#5 (byte*) SCREEN#10 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word) 4096 - (byte*) SCREEN#0 ← (word) 1024 + (byte[]) plots#0 ← (word/signed word) 4096 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 - *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 + *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 40 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 - (byte) line::x#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 10 + (byte) line::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -1033,7 +1033,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte[]) plots#2 ← phi( line::@1/(byte[]) plots#0 line::@2/(byte[]) plots#0 ) (byte) plot::idx#0 ← (byte[]) plots#2 *idx (byte) plot::x#2 (byte~) plot::$1 ← (byte*) SCREEN#2 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -1049,23 +1049,23 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word) 4096 - (byte*) SCREEN#0 ← (word) 1024 + (byte[]) plots#0 ← (word/signed word) 4096 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 - *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 + *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 40 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 - (byte) line::x#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 10 + (byte) line::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -1101,7 +1101,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) (byte) plot::idx#0 ← (byte[]) plots#0 *idx (byte) plot::x#2 (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -1112,28 +1112,28 @@ plot::@return: scope:[plot] from plot to:@end @end: scope:[] from @3 -Simple Condition (boolean~) main::$0 if((byte) main::i#1!=(byte) 40) goto main::@1 +Simple Condition (boolean~) main::$0 if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 Simple Condition (boolean~) line::$1 if((byte) line::x#0>=(byte) line::x1#0) goto line::@1 Simple Condition (boolean~) line::$3 if((byte) line::x#1<=(byte) line::x1#0) goto line::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word) 4096 - (byte*) SCREEN#0 ← (word) 1024 + (byte[]) plots#0 ← (word/signed word) 4096 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 - *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 + *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 40) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 - (byte) line::x#0 ← (byte) 0 - (byte) line::x1#0 ← (byte) 10 + (byte) line::x#0 ← (byte/signed byte/word/signed word) 0 + (byte) line::x1#0 ← (byte/signed byte/word/signed word) 10 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@2 @@ -1167,7 +1167,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) (byte) plot::idx#0 ← (byte[]) plots#0 *idx (byte) plot::x#2 (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -1192,9 +1192,9 @@ main: scope:[main] from @3 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 40) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 call line param-assignment @@ -1230,7 +1230,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -1251,9 +1251,9 @@ main: scope:[main] from @3 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 40) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 call line param-assignment @@ -1288,7 +1288,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(const byte) plot::x#0 line::@2/(byte) plot::x#1 ) (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -1311,9 +1311,9 @@ main: scope:[main] from @3 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 40) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 call line param-assignment @@ -1346,7 +1346,7 @@ plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(const byte) plot::x#0 line::@2/(byte) plot::x#1 ) (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -1369,9 +1369,9 @@ Inlining constant with var siblings (const byte) line::x#0 Inlining constant with var siblings (const byte) line::x#0 Inlining constant with var siblings (const byte) plot::x#0 Inlining constant with var siblings (const byte) plot::x#0 -Constant inlined line::x#0 = (byte) 0 -Constant inlined plot::x#0 = (byte) 0 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined plot::x#0 = (byte/signed byte/word/signed word) 0 +Constant inlined line::x#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -1379,11 +1379,11 @@ CONTROL FLOW GRAPH main: scope:[main] from @3 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 40) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 call line param-assignment @@ -1395,13 +1395,13 @@ main::@return: scope:[main] from main::@5 return to:@return line: scope:[line] from main::@2 - if((byte) 0>=(const byte) line::x1#0) goto line::@1 + if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 to:line::@2 line::@1: scope:[line] from line call plot param-assignment to:line::@return line::@2: scope:[line] from line line::@8 - (byte) line::x#2 ← phi( line/(byte) 0 line::@8/(byte) line::x#1 ) + (byte) line::x#2 ← phi( line/(byte/signed byte/word/signed word) 0 line::@8/(byte) line::x#1 ) (byte) plot::x#1 ← (byte) line::x#2 call plot param-assignment to:line::@8 @@ -1413,10 +1413,10 @@ line::@return: scope:[line] from line::@1 line::@8 return to:@return plot: scope:[plot] from line::@1 line::@2 - (byte) plot::x#2 ← phi( line::@1/(byte) 0 line::@2/(byte) plot::x#1 ) + (byte) plot::x#2 ← phi( line::@1/(byte/signed byte/word/signed word) 0 line::@2/(byte) plot::x#1 ) (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -1432,7 +1432,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) line((byte) line::x0 , (byte) line::x1) (label) line::@1 (label) line::@2 @@ -1443,7 +1443,7 @@ FINAL SYMBOL TABLE (byte) line::x#2 (byte) line::x0 (byte) line::x1 -(const byte) line::x1#0 = (byte) 10 +(const byte) line::x1#0 = (byte/signed byte/word/signed word) 10 (void()) main() (label) main::@1 (label) main::@2 @@ -1462,7 +1462,7 @@ FINAL SYMBOL TABLE (byte) plot::x#1 (byte) plot::x#2 (byte[]) plots -(const byte[]) plots#0 = (word) 4096 +(const byte[]) plots#0 = (word/signed word) 4096 Block Sequence Planned @begin @3 @end main main::@1 main::@2 main::@5 main::@return line line::@2 line::@8 line::@return line::@1 plot plot::@return Added new block during phi lifting main::@6(between main::@1 and main::@1) @@ -1478,11 +1478,11 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @3 to:main::@1 main::@1: scope:[main] from main main::@6 - (byte) main::i#2 ← phi( main/(byte) 0 main::@6/(byte~) main::i#3 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@6/(byte~) main::i#3 ) *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 40) goto main::@6 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@6 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 call line param-assignment @@ -1497,10 +1497,10 @@ main::@6: scope:[main] from main::@1 (byte~) main::i#3 ← (byte) main::i#1 to:main::@1 line: scope:[line] from main::@2 - if((byte) 0>=(const byte) line::x1#0) goto line::@1 + if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 to:line::@2 line::@2: scope:[line] from line line::@9 - (byte) line::x#2 ← phi( line/(byte) 0 line::@9/(byte~) line::x#4 ) + (byte) line::x#2 ← phi( line/(byte/signed byte/word/signed word) 0 line::@9/(byte~) line::x#4 ) (byte) plot::x#1 ← (byte) line::x#2 (byte~) plot::x#3 ← (byte) plot::x#1 call plot param-assignment @@ -1519,10 +1519,10 @@ line::@1: scope:[line] from line call plot param-assignment to:line::@return plot: scope:[plot] from line::@1 line::@2 - (byte) plot::x#2 ← phi( line::@1/(byte) 0 line::@2/(byte~) plot::x#3 ) + (byte) plot::x#2 ← phi( line::@1/(byte/signed byte/word/signed word) 0 line::@2/(byte~) plot::x#3 ) (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 + (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 to:plot::@return plot::@return: scope:[plot] from plot @@ -1550,11 +1550,11 @@ main: scope:[main] from @3 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@6 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@6/(byte~) main::i#3 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@6/(byte~) main::i#3 ) [ main::i#2 ] [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] - [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] + [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1!=(byte) 40) goto main::@6 [ main::i#1 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@6 [ main::i#1 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@5 [7] call line param-assignment [ ] @@ -1569,10 +1569,10 @@ main::@6: scope:[main] from main::@1 [10] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ] to:main::@1 line: scope:[line] from main::@2 - [11] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] + [11] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] to:line::@2 line::@2: scope:[line] from line line::@9 - [12] (byte) line::x#2 ← phi( line/(byte) 0 line::@9/(byte~) line::x#4 ) [ line::x#2 ] + [12] (byte) line::x#2 ← phi( line/(byte/signed byte/word/signed word) 0 line::@9/(byte~) line::x#4 ) [ line::x#2 ] [13] (byte) plot::x#1 ← (byte) line::x#2 [ line::x#2 plot::x#1 ] [14] (byte~) plot::x#3 ← (byte) plot::x#1 [ line::x#2 plot::x#3 ] [15] call plot param-assignment [ line::x#2 ] @@ -1591,10 +1591,10 @@ line::@1: scope:[line] from line [20] call plot param-assignment [ ] to:line::@return plot: scope:[plot] from line::@1 line::@2 - [21] (byte) plot::x#2 ← phi( line::@1/(byte) 0 line::@2/(byte~) plot::x#3 ) [ plot::x#2 ] + [21] (byte) plot::x#2 ← phi( line::@1/(byte/signed byte/word/signed word) 0 line::@2/(byte~) plot::x#3 ) [ plot::x#2 ] [22] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] [23] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] - [24] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] + [24] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] [25] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] to:plot::@return plot::@return: scope:[plot] from plot @@ -1624,11 +1624,11 @@ main: scope:[main] from @3 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] - [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] + [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@5 [7] call line param-assignment [ ] @@ -1640,10 +1640,10 @@ main::@return: scope:[main] from main::@5 [9] return [ ] to:@return line: scope:[line] from main::@2 - [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] + [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] to:line::@2 line::@2: scope:[line] from line line::@8 - [11] (byte) line::x#2 ← phi( line/(byte) 0 line::@8/(byte) line::x#1 ) [ line::x#2 ] + [11] (byte) line::x#2 ← phi( line/(byte/signed byte/word/signed word) 0 line::@8/(byte) line::x#1 ) [ line::x#2 ] [12] (byte) plot::x#1 ← (byte) line::x#2 [ line::x#2 plot::x#1 ] [13] call plot param-assignment [ line::x#2 ] to:line::@8 @@ -1658,10 +1658,10 @@ line::@1: scope:[line] from line [17] call plot param-assignment [ ] to:line::@return plot: scope:[plot] from line::@1 line::@2 - [18] (byte) plot::x#2 ← phi( line::@1/(byte) 0 line::@2/(byte) plot::x#1 ) [ plot::x#2 ] + [18] (byte) plot::x#2 ← phi( line::@1/(byte/signed byte/word/signed word) 0 line::@2/(byte) plot::x#1 ) [ plot::x#2 ] [19] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] [20] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] - [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] + [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] [22] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] to:plot::@return plot::@return: scope:[plot] from plot @@ -1679,11 +1679,11 @@ main: scope:[main] from @3 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@5 [7] call line param-assignment [ ] ( main:0 [ ] ) @@ -1695,10 +1695,10 @@ main::@return: scope:[main] from main::@5 [9] return [ ] ( main:0 [ ] ) to:@return line: scope:[line] from main::@2 - [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) + [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) to:line::@2 line::@2: scope:[line] from line line::@8 - [11] (byte) line::x#2 ← phi( line/(byte) 0 line::@8/(byte) line::x#1 ) [ line::x#2 ] ( main:0::line:7 [ line::x#2 ] ) + [11] (byte) line::x#2 ← phi( line/(byte/signed byte/word/signed word) 0 line::@8/(byte) line::x#1 ) [ line::x#2 ] ( main:0::line:7 [ line::x#2 ] ) [12] (byte) plot::x#1 ← (byte) line::x#2 [ line::x#2 plot::x#1 ] ( main:0::line:7 [ line::x#2 plot::x#1 ] ) [13] call plot param-assignment [ line::x#2 ] ( main:0::line:7 [ line::x#2 ] ) to:line::@8 @@ -1713,10 +1713,10 @@ line::@1: scope:[line] from line [17] call plot param-assignment [ ] ( main:0::line:7 [ ] ) to:line::@return plot: scope:[plot] from line::@1 line::@2 - [18] (byte) plot::x#2 ← phi( line::@1/(byte) 0 line::@2/(byte) plot::x#1 ) [ plot::x#2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::x#2 ] main:0::line:7::plot:17 [ plot::x#2 ] ) + [18] (byte) plot::x#2 ← phi( line::@1/(byte/signed byte/word/signed word) 0 line::@2/(byte) plot::x#1 ) [ plot::x#2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::x#2 ] main:0::line:7::plot:17 [ plot::x#2 ] ) [19] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 ] main:0::line:7::plot:17 [ plot::idx#0 ] ) [20] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$1 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$1 ] ) - [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) + [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) [22] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:0::line:7::plot:13 [ line::x#2 ] main:0::line:7::plot:17 [ ] ) to:plot::@return plot::@return: scope:[plot] from plot @@ -1725,20 +1725,20 @@ plot::@return: scope:[plot] from plot DOMINATORS @begin dominated by @begin -@3 dominated by @3 @begin -@end dominated by @3 @end @begin -main dominated by @3 @begin main -main::@1 dominated by @3 @begin main::@1 main -main::@2 dominated by @3 @begin main::@2 main::@1 main -main::@5 dominated by @3 @begin main::@2 main::@1 main::@5 main -main::@return dominated by @3 @begin main::@2 main::@1 main main::@5 main::@return -line dominated by @3 @begin line main::@2 main::@1 main -line::@2 dominated by @3 line::@2 @begin line main::@2 main::@1 main -line::@8 dominated by @3 line::@2 @begin line main::@2 main::@1 line::@8 main -line::@return dominated by @3 @begin line main::@2 main::@1 line::@return main -line::@1 dominated by @3 @begin line::@1 line main::@2 main::@1 main -plot dominated by @3 @begin line main::@2 main::@1 plot main -plot::@return dominated by @3 @begin line main::@2 main::@1 plot::@return plot main +@3 dominated by @begin @3 +@end dominated by @begin @end @3 +main dominated by @begin main @3 +main::@1 dominated by @begin main @3 main::@1 +main::@2 dominated by @begin main @3 main::@1 main::@2 +main::@5 dominated by @begin main @3 main::@1 main::@2 main::@5 +main::@return dominated by main::@return @begin main @3 main::@1 main::@2 main::@5 +line dominated by @begin line main @3 main::@1 main::@2 +line::@2 dominated by @begin line main line::@2 @3 main::@1 main::@2 +line::@8 dominated by line::@8 @begin line main line::@2 @3 main::@1 main::@2 +line::@return dominated by @begin line main @3 main::@1 line::@return main::@2 +line::@1 dominated by @begin line line::@1 main @3 main::@1 main::@2 +plot dominated by @begin line main @3 plot main::@1 main::@2 +plot::@return dominated by @begin line main @3 plot main::@1 plot::@return main::@2 Found back edge: Loop head: main::@1 tails: main::@1 blocks: null Found back edge: Loop head: main::@2 tails: main::@5 blocks: null @@ -1831,7 +1831,7 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -1845,13 +1845,13 @@ main: { ldx i txa sta plots,x - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=coby2 lda #0 ldx i sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG16 [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$28 bne b1_from_b1 @@ -1875,13 +1875,13 @@ main: { line: { .const x1 = $a .label x = 3 - //SEG24 [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 + //SEG24 [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 lda #0 cmp #x1 bcs b1 //SEG25 [11] phi from line to line::@2 [phi:line->line::@2] b2_from_line: - //SEG26 [11] phi (byte) line::x#2 = (byte) 0 [phi:line->line::@2#0] -- zpby1=coby1 + //SEG26 [11] phi (byte) line::x#2 = (byte/signed byte/word/signed word) 0 [phi:line->line::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 @@ -1919,7 +1919,7 @@ line: { //SEG40 [17] call plot param-assignment [ ] ( main:0::line:7 [ ] ) //SEG41 [18] phi from line::@1 to plot [phi:line::@1->plot] plot_from_b1: - //SEG42 [18] phi (byte) plot::x#2 = (byte) 0 [phi:line::@1->plot#0] -- zpby1=coby1 + //SEG42 [18] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:line::@1->plot#0] -- zpby1=coby1 lda #0 sta plot.x jsr plot @@ -1939,7 +1939,7 @@ plot: { ldx idx lda SCREEN,x sta _1 - //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- zpby1=zpby2_plus_1 + //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- zpby1=zpby2_plus_1 lda _1 clc adc #1 @@ -1957,12 +1957,12 @@ plot: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp ZP_BYTE:6 [ plot::$1 ] has ALU potential. -Statement [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) 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 ] -Statement [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) always clobbers reg byte a +Statement [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) always clobbers reg byte a Statement [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) always clobbers reg byte a -Statement [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) always clobbers reg byte a -Statement [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) always clobbers reg byte a +Statement [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) 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 [ line::x#2 line::x#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ plot::x#2 plot::x#1 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , @@ -2016,7 +2016,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -2027,12 +2027,12 @@ main: { //SEG13 [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=xby txa sta plots,x - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #0 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$28 bne b1_from_b1 //SEG17 main::@2 @@ -2052,13 +2052,13 @@ main: { line: { .const x1 = $a .label x = 2 - //SEG24 [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 + //SEG24 [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 lda #0 cmp #x1 bcs b1 //SEG25 [11] phi from line to line::@2 [phi:line->line::@2] b2_from_line: - //SEG26 [11] phi (byte) line::x#2 = (byte) 0 [phi:line->line::@2#0] -- zpby1=coby1 + //SEG26 [11] phi (byte) line::x#2 = (byte/signed byte/word/signed word) 0 [phi:line->line::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 @@ -2092,7 +2092,7 @@ line: { //SEG40 [17] call plot param-assignment [ ] ( main:0::line:7 [ ] ) //SEG41 [18] phi from line::@1 to plot [phi:line::@1->plot] plot_from_b1: - //SEG42 [18] phi (byte) plot::x#2 = (byte) 0 [phi:line::@1->plot#0] -- yby=coby1 + //SEG42 [18] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:line::@1->plot#0] -- yby=coby1 ldy #0 jsr plot jmp breturn @@ -2103,7 +2103,7 @@ plot: { ldx plots,y //SEG45 [20] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$1 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$1 ] ) -- aby=cowo1_derefidx_xby lda SCREEN,x - //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 + //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 clc adc #1 //SEG47 [22] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:0::line:7::plot:13 [ line::x#2 ] main:0::line:7::plot:17 [ ] ) -- cowo1_derefidx_xby=aby @@ -2143,7 +2143,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -2153,12 +2153,12 @@ main: { //SEG13 [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=xby txa sta plots,x - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #0 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$28 bne b1 //SEG17 main::@2 @@ -2178,13 +2178,13 @@ main: { line: { .const x1 = $a .label x = 2 - //SEG24 [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 + //SEG24 [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 lda #0 cmp #x1 bcs b1 //SEG25 [11] phi from line to line::@2 [phi:line->line::@2] b2_from_line: - //SEG26 [11] phi (byte) line::x#2 = (byte) 0 [phi:line->line::@2#0] -- zpby1=coby1 + //SEG26 [11] phi (byte) line::x#2 = (byte/signed byte/word/signed word) 0 [phi:line->line::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 @@ -2216,7 +2216,7 @@ line: { b1: //SEG40 [17] call plot param-assignment [ ] ( main:0::line:7 [ ] ) //SEG41 [18] phi from line::@1 to plot [phi:line::@1->plot] - //SEG42 [18] phi (byte) plot::x#2 = (byte) 0 [phi:line::@1->plot#0] -- yby=coby1 + //SEG42 [18] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:line::@1->plot#0] -- yby=coby1 ldy #0 jsr plot jmp breturn @@ -2227,7 +2227,7 @@ plot: { ldx plots,y //SEG45 [20] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$1 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$1 ] ) -- aby=cowo1_derefidx_xby lda SCREEN,x - //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 + //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 clc adc #1 //SEG47 [22] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:0::line:7::plot:13 [ line::x#2 ] main:0::line:7::plot:17 [ ] ) -- cowo1_derefidx_xby=aby @@ -2265,7 +2265,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -2275,12 +2275,12 @@ main: { //SEG13 [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=xby txa sta plots,x - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #0 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$28 bne b1 //SEG17 main::@2 @@ -2298,12 +2298,12 @@ main: { line: { .const x1 = $a .label x = 2 - //SEG24 [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 + //SEG24 [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 lda #0 cmp #x1 bcs b1 //SEG25 [11] phi from line to line::@2 [phi:line->line::@2] - //SEG26 [11] phi (byte) line::x#2 = (byte) 0 [phi:line->line::@2#0] -- zpby1=coby1 + //SEG26 [11] phi (byte) line::x#2 = (byte/signed byte/word/signed word) 0 [phi:line->line::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 @@ -2333,7 +2333,7 @@ line: { b1: //SEG40 [17] call plot param-assignment [ ] ( main:0::line:7 [ ] ) //SEG41 [18] phi from line::@1 to plot [phi:line::@1->plot] - //SEG42 [18] phi (byte) plot::x#2 = (byte) 0 [phi:line::@1->plot#0] -- yby=coby1 + //SEG42 [18] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:line::@1->plot#0] -- yby=coby1 ldy #0 jsr plot jmp breturn @@ -2344,7 +2344,7 @@ plot: { ldx plots,y //SEG45 [20] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$1 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$1 ] ) -- aby=cowo1_derefidx_xby lda SCREEN,x - //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 + //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 clc adc #1 //SEG47 [22] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:0::line:7::plot:13 [ line::x#2 ] main:0::line:7::plot:17 [ ] ) -- cowo1_derefidx_xby=aby @@ -2374,7 +2374,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -2383,12 +2383,12 @@ main: { //SEG13 [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=xby txa sta plots,x - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #0 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$28 bne b1 //SEG17 main::@2 @@ -2406,12 +2406,12 @@ main: { line: { .const x1 = $a .label x = 2 - //SEG24 [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 + //SEG24 [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 lda #0 cmp #x1 bcs b1 //SEG25 [11] phi from line to line::@2 [phi:line->line::@2] - //SEG26 [11] phi (byte) line::x#2 = (byte) 0 [phi:line->line::@2#0] -- zpby1=coby1 + //SEG26 [11] phi (byte) line::x#2 = (byte/signed byte/word/signed word) 0 [phi:line->line::@2#0] -- zpby1=coby1 lda #0 sta x //SEG27 [11] phi from line::@8 to line::@2 [phi:line::@8->line::@2] @@ -2440,7 +2440,7 @@ line: { b1: //SEG40 [17] call plot param-assignment [ ] ( main:0::line:7 [ ] ) //SEG41 [18] phi from line::@1 to plot [phi:line::@1->plot] - //SEG42 [18] phi (byte) plot::x#2 = (byte) 0 [phi:line::@1->plot#0] -- yby=coby1 + //SEG42 [18] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:line::@1->plot#0] -- yby=coby1 ldy #0 jsr plot jmp breturn @@ -2451,7 +2451,7 @@ plot: { ldx plots,y //SEG45 [20] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$1 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$1 ] ) -- aby=cowo1_derefidx_xby lda SCREEN,x - //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 + //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 clc adc #1 //SEG47 [22] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:0::line:7::plot:13 [ line::x#2 ] main:0::line:7::plot:17 [ ] ) -- cowo1_derefidx_xby=aby @@ -2480,7 +2480,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -2489,12 +2489,12 @@ main: { //SEG13 [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=xby txa sta plots,x - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #0 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$28 bne b1 //SEG17 main::@2 @@ -2512,12 +2512,12 @@ main: { line: { .const x1 = $a .label x = 2 - //SEG24 [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 + //SEG24 [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 lda #0 cmp #x1 bcs b1 //SEG25 [11] phi from line to line::@2 [phi:line->line::@2] - //SEG26 [11] phi (byte) line::x#2 = (byte) 0 [phi:line->line::@2#0] -- zpby1=coby1 + //SEG26 [11] phi (byte) line::x#2 = (byte/signed byte/word/signed word) 0 [phi:line->line::@2#0] -- zpby1=coby1 sta x //SEG27 [11] phi from line::@8 to line::@2 [phi:line::@8->line::@2] //SEG28 [11] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@2#0] -- register_copy @@ -2545,7 +2545,7 @@ line: { b1: //SEG40 [17] call plot param-assignment [ ] ( main:0::line:7 [ ] ) //SEG41 [18] phi from line::@1 to plot [phi:line::@1->plot] - //SEG42 [18] phi (byte) plot::x#2 = (byte) 0 [phi:line::@1->plot#0] -- yby=coby1 + //SEG42 [18] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:line::@1->plot#0] -- yby=coby1 ldy #0 jsr plot jmp breturn @@ -2556,7 +2556,7 @@ plot: { ldx plots,y //SEG45 [20] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$1 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$1 ] ) -- aby=cowo1_derefidx_xby lda SCREEN,x - //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 + //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 clc adc #1 //SEG47 [22] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:0::line:7::plot:13 [ line::x#2 ] main:0::line:7::plot:17 [ ] ) -- cowo1_derefidx_xby=aby @@ -2571,7 +2571,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) line((byte) line::x0 , (byte) line::x1) (label) line::@1 (label) line::@2 @@ -2582,7 +2582,7 @@ FINAL SYMBOL TABLE (byte) line::x#2 x zp ZP_BYTE:2 101.0 (byte) line::x0 (byte) line::x1 -(const byte) line::x1#0 x1 = (byte) 10 +(const byte) line::x1#0 x1 = (byte/signed byte/word/signed word) 10 (void()) main() (label) main::@1 (label) main::@2 @@ -2601,7 +2601,7 @@ FINAL SYMBOL TABLE (byte) plot::x#1 reg byte y 202.0 (byte) plot::x#2 reg byte y 103.0 (byte[]) plots -(const byte[]) plots#0 plots = (word) 4096 +(const byte[]) plots#0 plots = (word/signed word) 4096 reg byte x [ main::i#2 main::i#1 ] zp ZP_BYTE:2 [ line::x#2 line::x#1 ] @@ -2627,7 +2627,7 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -2636,12 +2636,12 @@ main: { //SEG13 [3] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=xby txa sta plots,x - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #0 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$28 bne b1 //SEG17 main::@2 @@ -2659,12 +2659,12 @@ main: { line: { .const x1 = $a .label x = 2 - //SEG24 [10] if((byte) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 + //SEG24 [10] if((byte/signed byte/word/signed word) 0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:0::line:7 [ ] ) -- coby1_ge_coby2_then_la1 lda #0 cmp #x1 bcs b1 //SEG25 [11] phi from line to line::@2 [phi:line->line::@2] - //SEG26 [11] phi (byte) line::x#2 = (byte) 0 [phi:line->line::@2#0] -- zpby1=coby1 + //SEG26 [11] phi (byte) line::x#2 = (byte/signed byte/word/signed word) 0 [phi:line->line::@2#0] -- zpby1=coby1 sta x //SEG27 [11] phi from line::@8 to line::@2 [phi:line::@8->line::@2] //SEG28 [11] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@2#0] -- register_copy @@ -2692,7 +2692,7 @@ line: { b1: //SEG40 [17] call plot param-assignment [ ] ( main:0::line:7 [ ] ) //SEG41 [18] phi from line::@1 to plot [phi:line::@1->plot] - //SEG42 [18] phi (byte) plot::x#2 = (byte) 0 [phi:line::@1->plot#0] -- yby=coby1 + //SEG42 [18] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:line::@1->plot#0] -- yby=coby1 ldy #0 jsr plot jmp breturn @@ -2703,7 +2703,7 @@ plot: { ldx plots,y //SEG45 [20] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$1 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$1 ] ) -- aby=cowo1_derefidx_xby lda SCREEN,x - //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 + //SEG46 [21] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:0::line:7::plot:13 [ line::x#2 plot::idx#0 plot::$2 ] main:0::line:7::plot:17 [ plot::idx#0 plot::$2 ] ) -- aby=aby_plus_1 clc adc #1 //SEG47 [22] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:0::line:7::plot:13 [ line::x#2 ] main:0::line:7::plot:17 [ ] ) -- cowo1_derefidx_xby=aby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.sym b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.sym index 1dfbf6e1b..128d25253 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) line((byte) line::x0 , (byte) line::x1) (label) line::@1 (label) line::@2 @@ -13,7 +13,7 @@ (byte) line::x#2 x zp ZP_BYTE:2 101.0 (byte) line::x0 (byte) line::x1 -(const byte) line::x1#0 x1 = (byte) 10 +(const byte) line::x1#0 x1 = (byte/signed byte/word/signed word) 10 (void()) main() (label) main::@1 (label) main::@2 @@ -32,7 +32,7 @@ (byte) plot::x#1 reg byte y 202.0 (byte) plot::x#2 reg byte y 103.0 (byte[]) plots -(const byte[]) plots#0 plots = (word) 4096 +(const byte[]) plots#0 plots = (word/signed word) 4096 reg byte x [ main::i#2 main::i#1 ] zp ZP_BYTE:2 [ line::x#2 line::x#1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.cfg b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.cfg index c1a3407ff..650e03876 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.cfg @@ -9,10 +9,10 @@ main: scope:[main] from @1 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [3] (byte) main::i#2 ← phi( main/(byte) 40 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 40 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log index a9f892f3f..91f67cd07 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log @@ -13,23 +13,23 @@ void main() { } } PROGRAM - (byte*) SCREEN ← (word) 1024 - (byte) STAR ← (byte) 81 + (byte*) SCREEN ← (word/signed word) 1024 + (byte) STAR ← (byte/signed byte/word/signed word) 81 (byte*) VIC ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC + (byte~) $0 - (byte*~) $2 ← (byte*~) $1 + (byte) 1 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0 + (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL ← (byte*~) $2 - (byte) RED ← (byte) 2 + (byte) RED ← (byte/signed byte/word/signed word) 2 proc (void()) main() *((byte*) SCREEN) ← (byte) STAR *((byte*) BGCOL) ← (byte) RED - (byte) main::i ← (byte) 40 + (byte) main::i ← (byte/signed byte/word/signed word) 40 main::@1: - (byte~) main::$0 ← (byte) STAR + (byte) 1 + (byte~) main::$0 ← (byte) STAR + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 80 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 main::@return: return @@ -37,7 +37,7 @@ endproc // main() call main SYMBOLS -(byte~) $0 +(byte/signed byte/word/signed word~) $0 (byte*~) $1 (byte*~) $2 (byte*) BGCOL @@ -54,25 +54,25 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (byte) STAR ← (byte) 81 + (byte*) SCREEN ← (word/signed word) 1024 + (byte) STAR ← (byte/signed byte/word/signed word) 81 (byte*) VIC ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC + (byte~) $0 - (byte*~) $2 ← (byte*~) $1 + (byte) 1 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0 + (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL ← (byte*~) $2 - (byte) RED ← (byte) 2 + (byte) RED ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from *((byte*) SCREEN) ← (byte) STAR *((byte*) BGCOL) ← (byte) RED - (byte) main::i ← (byte) 40 + (byte) main::i ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) STAR + (byte) 1 + (byte~) main::$0 ← (byte) STAR + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 80 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 @@ -88,25 +88,25 @@ main::@return: scope:[main] from main::@2 Removing empty block main::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (byte) STAR ← (byte) 81 + (byte*) SCREEN ← (word/signed word) 1024 + (byte) STAR ← (byte/signed byte/word/signed word) 81 (byte*) VIC ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC + (byte~) $0 - (byte*~) $2 ← (byte*~) $1 + (byte) 1 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0 + (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL ← (byte*~) $2 - (byte) RED ← (byte) 2 + (byte) RED ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from *((byte*) SCREEN) ← (byte) STAR *((byte*) BGCOL) ← (byte) RED - (byte) main::i ← (byte) 40 + (byte) main::i ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) STAR + (byte) 1 + (byte~) main::$0 ← (byte) STAR + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 80 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -121,25 +121,25 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (byte) STAR ← (byte) 81 + (byte*) SCREEN ← (word/signed word) 1024 + (byte) STAR ← (byte/signed byte/word/signed word) 81 (byte*) VIC ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC + (byte~) $0 - (byte*~) $2 ← (byte*~) $1 + (byte) 1 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0 + (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL ← (byte*~) $2 - (byte) RED ← (byte) 2 + (byte) RED ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from @1 *((byte*) SCREEN) ← (byte) STAR *((byte*) BGCOL) ← (byte) RED - (byte) main::i ← (byte) 40 + (byte) main::i ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) STAR + (byte) 1 + (byte~) main::$0 ← (byte) STAR + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 80 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -156,14 +156,14 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte) STAR#0 ← (byte) 81 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte*) VIC#0 ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC#0 + (byte~) $0 - (byte*~) $2 ← (byte*~) $1 + (byte) 1 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 + (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL#0 ← (byte*~) $2 - (byte) RED#0 ← (byte) 2 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from @1 (byte*) BGCOL#1 ← phi( @1/(byte*) BGCOL#2 ) @@ -172,16 +172,16 @@ main: scope:[main] from @1 (byte) STAR#1 ← phi( @1/(byte) STAR#3 ) *((byte*) SCREEN#1) ← (byte) STAR#1 *((byte*) BGCOL#1) ← (byte) RED#1 - (byte) main::i#0 ← (byte) 40 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 ) (byte) STAR#2 ← phi( main/(byte) STAR#1 main::@1/(byte) STAR#2 ) - (byte~) main::$0 ← (byte) STAR#2 + (byte) 1 + (byte~) main::$0 ← (byte) STAR#2 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 80 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -200,14 +200,14 @@ main::@return: scope:[main] from main::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte) STAR#0 ← (byte) 81 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte*) VIC#0 ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC#0 + (byte~) $0 - (byte*~) $2 ← (byte*~) $1 + (byte) 1 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 + (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL#0 ← (byte*~) $2 - (byte) RED#0 ← (byte) 2 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from @1 (byte*) BGCOL#1 ← phi( @1/(byte*) BGCOL#2 ) @@ -216,16 +216,16 @@ main: scope:[main] from @1 (byte) STAR#1 ← phi( @1/(byte) STAR#3 ) *((byte*) SCREEN#1) ← (byte) STAR#1 *((byte*) BGCOL#1) ← (byte) RED#1 - (byte) main::i#0 ← (byte) 40 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 ) (byte) STAR#2 ← phi( main/(byte) STAR#1 main::@1/(byte) STAR#2 ) - (byte~) main::$0 ← (byte) STAR#2 + (byte) 1 + (byte~) main::$0 ← (byte) STAR#2 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 80 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -243,7 +243,7 @@ main::@return: scope:[main] from main::@1 @end: scope:[] from @2 INITIAL SSA SYMBOL TABLE -(byte~) $0 +(byte/signed byte/word/signed word~) $0 (byte*~) $1 (byte*~) $2 (label) @1 @@ -284,14 +284,14 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte) STAR#0 ← (byte) 81 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte*) VIC#0 ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC#0 + (byte~) $0 - (byte*~) $2 ← (byte*~) $1 + (byte) 1 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 + (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL#0 ← (byte*~) $2 - (byte) RED#0 ← (byte) 2 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from @1 (byte*) BGCOL#1 ← phi( @1/(byte*) BGCOL#2 ) @@ -300,16 +300,16 @@ main: scope:[main] from @1 (byte) STAR#1 ← phi( @1/(byte) STAR#3 ) *((byte*) SCREEN#1) ← (byte) STAR#1 *((byte*) BGCOL#1) ← (byte) RED#1 - (byte) main::i#0 ← (byte) 40 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 ) (byte) STAR#2 ← phi( main/(byte) STAR#1 main::@1/(byte) STAR#2 ) - (byte~) main::$0 ← (byte) STAR#2 + (byte) 1 + (byte~) main::$0 ← (byte) STAR#2 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 80 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -331,27 +331,27 @@ Alias (byte*) BGCOL#0 = (byte*) BGCOL#1 (byte*) BGCOL#2 (byte*~) $2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte) STAR#0 ← (byte) 81 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte*) VIC#0 ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC#0 + (byte~) $0 - (byte*) BGCOL#0 ← (byte*~) $1 + (byte) 1 - (byte) RED#0 ← (byte) 2 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 + (byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from @1 *((byte*) SCREEN#0) ← (byte) STAR#0 *((byte*) BGCOL#0) ← (byte) RED#0 - (byte) main::i#0 ← (byte) 40 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 main::@1/(byte*) SCREEN#2 ) (byte) STAR#2 ← phi( main/(byte) STAR#0 main::@1/(byte) STAR#2 ) - (byte~) main::$0 ← (byte) STAR#2 + (byte) 1 + (byte~) main::$0 ← (byte) STAR#2 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 80 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -367,27 +367,27 @@ Self Phi Eliminated (byte*) SCREEN#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte) STAR#0 ← (byte) 81 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte*) VIC#0 ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC#0 + (byte~) $0 - (byte*) BGCOL#0 ← (byte*~) $1 + (byte) 1 - (byte) RED#0 ← (byte) 2 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 + (byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from @1 *((byte*) SCREEN#0) ← (byte) STAR#0 *((byte*) BGCOL#0) ← (byte) RED#0 - (byte) main::i#0 ← (byte) 40 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 ) (byte) STAR#2 ← phi( main/(byte) STAR#0 ) - (byte~) main::$0 ← (byte) STAR#2 + (byte) 1 + (byte~) main::$0 ← (byte) STAR#2 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#2 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 80 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -403,25 +403,25 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte) STAR#0 ← (byte) 81 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte*) VIC#0 ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC#0 + (byte~) $0 - (byte*) BGCOL#0 ← (byte*~) $1 + (byte) 1 - (byte) RED#0 ← (byte) 2 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 + (byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from @1 *((byte*) SCREEN#0) ← (byte) STAR#0 *((byte*) BGCOL#0) ← (byte) RED#0 - (byte) main::i#0 ← (byte) 40 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) STAR#0 + (byte) 1 + (byte~) main::$0 ← (byte) STAR#0 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 80 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 80 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -432,29 +432,29 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte) 80) goto main::@1 +Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte) STAR#0 ← (byte) 81 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte*) VIC#0 ← (word) 53248 - (byte~) $0 ← (byte) 16 * (byte) 2 - (byte*~) $1 ← (byte*) VIC#0 + (byte~) $0 - (byte*) BGCOL#0 ← (byte*~) $1 + (byte) 1 - (byte) RED#0 ← (byte) 2 + (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 + (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 + (byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 to:@1 main: scope:[main] from @1 *((byte*) SCREEN#0) ← (byte) STAR#0 *((byte*) BGCOL#0) ← (byte) RED#0 - (byte) main::i#0 ← (byte) 40 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 40 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) STAR#0 + (byte) 1 + (byte~) main::$0 ← (byte) STAR#0 + (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 80) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -467,14 +467,14 @@ main::@return: scope:[main] from main::@1 Constant (const byte*) SCREEN#0 = 1024 Constant (const byte) STAR#0 = 81 Constant (const byte*) VIC#0 = 53248 -Constant (const byte) $0 = 16*2 +Constant (const byte/signed byte/word/signed word) $0 = 16*2 Constant (const byte) RED#0 = 2 Constant (const byte) main::i#0 = 40 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*~) $1 ← (const byte*) VIC#0 + (const byte) $0 - (byte*) BGCOL#0 ← (byte*~) $1 + (byte) 1 + (byte*~) $1 ← (const byte*) VIC#0 + (const byte/signed byte/word/signed word) $0 + (byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 to:@1 main: scope:[main] from @1 *((const byte*) SCREEN#0) ← (const byte) STAR#0 @@ -482,10 +482,10 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (const byte) STAR#0 + (byte) 1 + (byte~) main::$0 ← (const byte) STAR#0 + (byte/signed byte/word/signed word) 1 *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 80) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -500,7 +500,7 @@ Constant (const byte) main::$0 = STAR#0+1 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) BGCOL#0 ← (const byte*) $1 + (byte) 1 + (byte*) BGCOL#0 ← (const byte*) $1 + (byte/signed byte/word/signed word) 1 to:@1 main: scope:[main] from @1 *((const byte*) SCREEN#0) ← (const byte) STAR#0 @@ -510,7 +510,7 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 80) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -533,7 +533,7 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) main::$0 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 80) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -545,10 +545,10 @@ main::@return: scope:[main] from main::@1 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Constant inlined $1 = (const byte*) VIC#0+(byte) 16*(byte) 2 -Constant inlined $0 = (byte) 16*(byte) 2 -Constant inlined main::i#0 = (byte) 40 -Constant inlined main::$0 = (const byte) STAR#0+(byte) 1 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 40 +Constant inlined $0 = (byte/signed byte/word/signed word) 16*(byte/signed byte/word/signed word) 2 +Constant inlined $1 = (const byte*) VIC#0+(byte/signed byte/word/signed word) 16*(byte/signed byte/word/signed word) 2 +Constant inlined main::$0 = (const byte) STAR#0+(byte/signed byte/word/signed word) 1 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -558,10 +558,10 @@ main: scope:[main] from @1 *((const byte*) BGCOL#0) ← (const byte) RED#0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte) main::i#2 ← phi( main/(byte) 40 main::@1/(byte) main::i#1 ) - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 40 main::@1/(byte) main::i#1 ) + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 80) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -576,13 +576,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 = (const byte*) VIC#0+(byte) 16*(byte) 2+(byte) 1 +(const byte*) BGCOL#0 = (const byte*) VIC#0+(byte/signed byte/word/signed word) 16*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 (byte) RED -(const byte) RED#0 = (byte) 2 +(const byte) RED#0 = (byte/signed byte/word/signed word) 2 (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte) STAR -(const byte) STAR#0 = (byte) 81 +(const byte) STAR#0 = (byte/signed byte/word/signed word) 81 (byte*) VIC (const byte*) VIC#0 = (word) 53248 (void()) main() @@ -607,10 +607,10 @@ main: scope:[main] from @1 *((const byte*) BGCOL#0) ← (const byte) RED#0 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::i#2 ← phi( main/(byte) 40 main::@3/(byte~) main::i#3 ) - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 40 main::@3/(byte~) main::i#3 ) + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 80) goto main::@3 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@3 to:main::@return main::@return: scope:[main] from main::@1 return @@ -636,10 +636,10 @@ main: scope:[main] from @1 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] to:main::@1 main::@1: scope:[main] from main main::@3 - [3] (byte) main::i#2 ← phi( main/(byte) 40 main::@3/(byte~) main::i#3 ) [ main::i#2 ] - [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 40 main::@3/(byte~) main::i#3 ) [ main::i#2 ] + [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1!=(byte) 80) goto main::@3 [ main::i#1 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@3 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] @@ -667,10 +667,10 @@ main: scope:[main] from @1 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] to:main::@1 main::@1: scope:[main] from main main::@1 - [3] (byte) main::i#2 ← phi( main/(byte) 40 main::@1/(byte) main::i#1 ) [ main::i#2 ] - [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 40 main::@1/(byte) main::i#1 ) [ main::i#2 ] + [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1!=(byte) 80) goto main::@1 [ main::i#1 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] @@ -688,10 +688,10 @@ main: scope:[main] from @1 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [3] (byte) main::i#2 ← phi( main/(byte) 40 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 40 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] ( main:0 [ ] ) @@ -700,10 +700,10 @@ main::@return: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@return dominated by @1 main::@return @begin main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main Found back edge: Loop head: main::@1 tails: main::@1 blocks: null Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 @@ -765,7 +765,7 @@ main: { sta BGCOL //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG10 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 40 [phi:main->main::@1#0] -- zpby1=coby1 lda #$28 sta i jmp b1 @@ -775,13 +775,13 @@ main: { jmp b1 //SEG13 main::@1 b1: - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=coby2 lda #STAR+1 ldx i sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG16 [6] if((byte) main::i#1!=(byte) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$50 bne b1_from_b1 @@ -795,11 +795,11 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [1] *((const byte*) SCREEN#0) ← (const byte) STAR#0 [ ] ( main:0 [ ] ) always clobbers reg byte a Statement [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) 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 ] Statement [1] *((const byte*) SCREEN#0) ← (const byte) STAR#0 [ ] ( main:0 [ ] ) always clobbers reg byte a Statement [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#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 , REGISTER UPLIFT SCOPES @@ -842,7 +842,7 @@ main: { sta BGCOL //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG10 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 jmp b1 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -850,12 +850,12 @@ main: { //SEG12 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG13 main::@1 b1: - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #STAR+1 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$50 bne b1_from_b1 //SEG17 main::@return @@ -896,19 +896,19 @@ main: { sta BGCOL //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG10 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 jmp b1 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG12 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG13 main::@1 b1: - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #STAR+1 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$50 bne b1 //SEG17 main::@return @@ -947,19 +947,19 @@ main: { lda #RED sta BGCOL //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] - //SEG10 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 jmp b1 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG12 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG13 main::@1 b1: - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #STAR+1 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$50 bne b1 //SEG17 main::@return @@ -994,18 +994,18 @@ main: { lda #RED sta BGCOL //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] - //SEG10 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG12 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG13 main::@1 b1: - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #STAR+1 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$50 bne b1 //SEG17 main::@return @@ -1018,13 +1018,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (const byte*) VIC#0+(byte) 16*(byte) 2+(byte) 1 +(const byte*) BGCOL#0 BGCOL = (const byte*) VIC#0+(byte/signed byte/word/signed word) 16*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 (byte) RED -(const byte) RED#0 RED = (byte) 2 +(const byte) RED#0 RED = (byte/signed byte/word/signed word) 2 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) STAR -(const byte) STAR#0 STAR = (byte) 81 +(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (byte*) VIC (const byte*) VIC#0 VIC = (word) 53248 (void()) main() @@ -1061,18 +1061,18 @@ main: { lda #RED sta BGCOL //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] - //SEG10 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG12 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG13 main::@1 b1: - //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte/signed byte/word/signed word) 1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #STAR+1 sta SCREEN,x //SEG15 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG16 [6] if((byte) main::i#1!=(byte) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 80) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$50 bne b1 //SEG17 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.sym b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.sym index 254619cdb..5e597b561 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (const byte*) VIC#0+(byte) 16*(byte) 2+(byte) 1 +(const byte*) BGCOL#0 BGCOL = (const byte*) VIC#0+(byte/signed byte/word/signed word) 16*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 (byte) RED -(const byte) RED#0 RED = (byte) 2 +(const byte) RED#0 RED = (byte/signed byte/word/signed word) 2 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) STAR -(const byte) STAR#0 STAR = (byte) 81 +(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (byte*) VIC (const byte*) VIC#0 VIC = (word) 53248 (void()) main() diff --git a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.cfg b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.cfg index 99536ca12..6b5925b60 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.cfg @@ -5,17 +5,17 @@ to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] ( main:0 [ ] ) - [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] ( main:0 [ ] ) + [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [3] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) - [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) + [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) [6] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:0 [ main::i#2 main::$4 ] ) - [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [9] if((byte) main::i#1<(byte) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [10] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log index 915e0207c..44f27f504 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log @@ -10,20 +10,20 @@ void main() { } Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i PROGRAM - (byte[15]) fibs ← (word) 4352 + (byte[15]) fibs ← (word/signed word) 4352 proc (void()) main() - *((byte[15]) fibs + (byte) 0) ← (byte) 0 - *((byte[15]) fibs + (byte) 1) ← (byte) 1 - (byte) main::i ← (byte) 0 + *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (byte~) main::$0 ← (byte) main::i + (byte) 2 + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs *idx (byte) main::i - (byte~) main::$2 ← (byte) main::i + (byte) 1 + (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$5 ← (byte) main::i < (byte) 15 + (boolean~) main::$5 ← (byte) main::i < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 main::@return: return @@ -45,22 +45,22 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs ← (word) 4352 + (byte[15]) fibs ← (word/signed word) 4352 to:@1 main: scope:[main] from - *((byte[15]) fibs + (byte) 0) ← (byte) 0 - *((byte[15]) fibs + (byte) 1) ← (byte) 1 - (byte) main::i ← (byte) 0 + *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) main::i + (byte) 2 + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs *idx (byte) main::i - (byte~) main::$2 ← (byte) main::i + (byte) 1 + (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$5 ← (byte) main::i < (byte) 15 + (boolean~) main::$5 ← (byte) main::i < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 @@ -76,22 +76,22 @@ main::@return: scope:[main] from main::@2 Removing empty block main::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs ← (word) 4352 + (byte[15]) fibs ← (word/signed word) 4352 to:@1 main: scope:[main] from - *((byte[15]) fibs + (byte) 0) ← (byte) 0 - *((byte[15]) fibs + (byte) 1) ← (byte) 1 - (byte) main::i ← (byte) 0 + *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) main::i + (byte) 2 + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs *idx (byte) main::i - (byte~) main::$2 ← (byte) main::i + (byte) 1 + (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$5 ← (byte) main::i < (byte) 15 + (boolean~) main::$5 ← (byte) main::i < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -106,22 +106,22 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte[15]) fibs ← (word) 4352 + (byte[15]) fibs ← (word/signed word) 4352 to:@1 main: scope:[main] from @1 - *((byte[15]) fibs + (byte) 0) ← (byte) 0 - *((byte[15]) fibs + (byte) 1) ← (byte) 1 - (byte) main::i ← (byte) 0 + *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) main::i + (byte) 2 + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs *idx (byte) main::i - (byte~) main::$2 ← (byte) main::i + (byte) 1 + (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$5 ← (byte) main::i < (byte) 15 + (boolean~) main::$5 ← (byte) main::i < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -138,25 +138,25 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[15]) fibs#0 ← (word) 4352 + (byte[15]) fibs#0 ← (word/signed word) 4352 to:@1 main: scope:[main] from @1 (byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 ) - *((byte[15]) fibs#1 + (byte) 0) ← (byte) 0 - *((byte[15]) fibs#1 + (byte) 1) ← (byte) 1 - (byte) main::i#0 ← (byte) 0 + *((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte) 15 + (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -172,25 +172,25 @@ main::@return: scope:[main] from main::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte[15]) fibs#0 ← (word) 4352 + (byte[15]) fibs#0 ← (word/signed word) 4352 to:@1 main: scope:[main] from @1 (byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 ) - *((byte[15]) fibs#1 + (byte) 0) ← (byte) 0 - *((byte[15]) fibs#1 + (byte) 1) ← (byte) 1 - (byte) main::i#0 ← (byte) 0 + *((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte) 15 + (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -232,25 +232,25 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs#0 ← (word) 4352 + (byte[15]) fibs#0 ← (word/signed word) 4352 to:@1 main: scope:[main] from @1 (byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 ) - *((byte[15]) fibs#1 + (byte) 0) ← (byte) 0 - *((byte[15]) fibs#1 + (byte) 1) ← (byte) 1 - (byte) main::i#0 ← (byte) 0 + *((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte) 15 + (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -266,24 +266,24 @@ Alias (byte[15]) fibs#0 = (byte[15]) fibs#1 (byte[15]) fibs#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs#0 ← (word) 4352 + (byte[15]) fibs#0 ← (word/signed word) 4352 to:@1 main: scope:[main] from @1 - *((byte[15]) fibs#0 + (byte) 0) ← (byte) 0 - *((byte[15]) fibs#0 + (byte) 1) ← (byte) 1 - (byte) main::i#0 ← (byte) 0 + *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#0 main::@1/(byte[15]) fibs#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte) 15 + (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -298,24 +298,24 @@ Self Phi Eliminated (byte[15]) fibs#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs#0 ← (word) 4352 + (byte[15]) fibs#0 ← (word/signed word) 4352 to:@1 main: scope:[main] from @1 - *((byte[15]) fibs#0 + (byte) 0) ← (byte) 0 - *((byte[15]) fibs#0 + (byte) 1) ← (byte) 1 - (byte) main::i#0 ← (byte) 0 + *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#0 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte) 15 + (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -330,23 +330,23 @@ Redundant Phi (byte[15]) fibs#2 (byte[15]) fibs#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs#0 ← (word) 4352 + (byte[15]) fibs#0 ← (word/signed word) 4352 to:@1 main: scope:[main] from @1 - *((byte[15]) fibs#0 + (byte) 0) ← (byte) 0 - *((byte[15]) fibs#0 + (byte) 1) ← (byte) 1 - (byte) main::i#0 ← (byte) 0 + *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs#0 *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs#0 + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte) 15 + (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 if((boolean~) main::$5) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -357,27 +357,27 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$5 if((byte) main::i#1<(byte) 15) goto main::@1 +Simple Condition (boolean~) main::$5 if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs#0 ← (word) 4352 + (byte[15]) fibs#0 ← (word/signed word) 4352 to:@1 main: scope:[main] from @1 - *((byte[15]) fibs#0 + (byte) 0) ← (byte) 0 - *((byte[15]) fibs#0 + (byte) 1) ← (byte) 1 - (byte) main::i#0 ← (byte) 0 + *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (byte[15]) fibs#0 *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((byte[15]) fibs#0 + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 15) goto main::@1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -394,19 +394,19 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - *((const byte[15]) fibs#0 + (byte) 0) ← (byte) 0 - *((const byte[15]) fibs#0 + (byte) 1) ← (byte) 1 + *((const byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((const byte[15]) fibs#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte~) main::$3 ← (const byte[15]) fibs#0 *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 *((const byte[15]) fibs#0 + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 15) goto main::@1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -428,19 +428,19 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 - *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 (byte~) main::$2 ← (byte) main::i#2 - (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte~) main::$2 + (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte~) main::$2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((const byte[15]) fibs#0+(byte) 2 + (byte~) main::$0) ← (byte~) main::$4 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte~) main::$0) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 15) goto main::@1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -457,17 +457,17 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 - *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 + (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 15) goto main::@1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -485,23 +485,23 @@ Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 - *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 + (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 15) goto main::@1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -516,7 +516,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[15]) fibs -(const byte[15]) fibs#0 = (word) 4352 +(const byte[15]) fibs#0 = (word/signed word) 4352 (void()) main() (byte~) main::$1 (byte~) main::$3 @@ -538,17 +538,17 @@ CONTROL FLOW GRAPH - PHI LIFTED to:@end @end: scope:[] from @1 main: scope:[main] from @1 - *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 - *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::i#2 ← phi( main/(byte) 0 main::@3/(byte~) main::i#3 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 + (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 15) goto main::@3 + if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@3 to:main::@return main::@return: scope:[main] from main::@1 return @@ -571,17 +571,17 @@ CONTROL FLOW GRAPH - LIVE RANGES FOUND to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] - [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] + [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] + [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] to:main::@1 main::@1: scope:[main] from main main::@3 - [3] (byte) main::i#2 ← phi( main/(byte) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] + [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] [6] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] - [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] + [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [9] if((byte) main::i#1<(byte) 15) goto main::@3 [ main::i#1 ] + [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@3 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [10] return [ ] @@ -606,17 +606,17 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] - [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] + [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] + [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] to:main::@1 main::@1: scope:[main] from main main::@1 - [3] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] + [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] [6] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] - [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] + [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [9] if((byte) main::i#1<(byte) 15) goto main::@1 [ main::i#1 ] + [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [10] return [ ] @@ -630,17 +630,17 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] ( main:0 [ ] ) - [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] ( main:0 [ ] ) + [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) + [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [3] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) - [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) + [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) [6] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:0 [ main::i#2 main::$4 ] ) - [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [9] if((byte) main::i#1<(byte) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [10] return [ ] ( main:0 [ ] ) @@ -649,10 +649,10 @@ main::@return: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@return dominated by @1 main::@return @begin main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main Found back edge: Loop head: main::@1 tails: main::@1 blocks: null Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 @@ -713,15 +713,15 @@ main: { .label _3 = 4 .label _4 = 5 .label i = 2 - //SEG7 [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta fibs+0 - //SEG8 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta fibs+1 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -735,7 +735,7 @@ main: { ldx i lda fibs,x sta _1 - //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda fibs+1,x sta _3 @@ -744,13 +744,13 @@ main: { clc adc _3 sta _4 - //SEG17 [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG17 [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _4 ldx i sta fibs+2,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG19 [9] if((byte) main::i#1<(byte) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_lt_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_lt_coby1_then_la1 lda i cmp #$f bcc b1_from_b1 @@ -763,8 +763,8 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp ZP_BYTE:4 [ main::$3 ] has ALU potential. -Statement [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::$1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ main::$3 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , reg byte alu , @@ -798,15 +798,15 @@ b1: bend: //SEG6 main main: { - //SEG7 [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta fibs+0 - //SEG8 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta fibs+1 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -816,16 +816,16 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda fibs,x - //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) + //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) // [5] main::$3 ← fibs#0+1 *idx main::i#2 // ALU //SEG16 [6] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:0 [ main::i#2 main::$4 ] ) -- aby=aby_plus_cowo1_derefidx_xby clc adc fibs+1,x - //SEG17 [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta fibs+2,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1<(byte) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$f bcc b1_from_b1 //SEG20 main::@return @@ -854,15 +854,15 @@ b1: bend: //SEG6 main main: { - //SEG7 [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta fibs+0 - //SEG8 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta fibs+1 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -871,16 +871,16 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda fibs,x - //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) + //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) // [5] main::$3 ← fibs#0+1 *idx main::i#2 // ALU //SEG16 [6] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:0 [ main::i#2 main::$4 ] ) -- aby=aby_plus_cowo1_derefidx_xby clc adc fibs+1,x - //SEG17 [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta fibs+2,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1<(byte) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$f bcc b1 //SEG20 main::@return @@ -908,14 +908,14 @@ ASSEMBLER //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta fibs+0 - //SEG8 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta fibs+1 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -924,16 +924,16 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda fibs,x - //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) + //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) // [5] main::$3 ← fibs#0+1 *idx main::i#2 // ALU //SEG16 [6] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:0 [ main::i#2 main::$4 ] ) -- aby=aby_plus_cowo1_derefidx_xby clc adc fibs+1,x - //SEG17 [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta fibs+2,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1<(byte) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$f bcc b1 //SEG20 main::@return @@ -957,14 +957,14 @@ ASSEMBLER //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta fibs+0 - //SEG8 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta fibs+1 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG12 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -972,16 +972,16 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda fibs,x - //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) + //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) // [5] main::$3 ← fibs#0+1 *idx main::i#2 // ALU //SEG16 [6] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:0 [ main::i#2 main::$4 ] ) -- aby=aby_plus_cowo1_derefidx_xby clc adc fibs+1,x - //SEG17 [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta fibs+2,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1<(byte) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$f bcc b1 //SEG20 main::@return @@ -994,7 +994,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[15]) fibs -(const byte[15]) fibs#0 fibs = (word) 4352 +(const byte[15]) fibs#0 fibs = (word/signed word) 4352 (void()) main() (byte~) main::$1 reg byte a 11.0 (byte~) main::$3 reg byte alu 22.0 @@ -1024,14 +1024,14 @@ FINAL CODE //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte[15]) fibs#0+(byte) 0) ← (byte) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #0 sta fibs+0 - //SEG8 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta fibs+1 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG12 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -1039,16 +1039,16 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda fibs,x - //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) + //SEG15 [5] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:0 [ main::i#2 main::$1 main::$3 ] ) // [5] main::$3 ← fibs#0+1 *idx main::i#2 // ALU //SEG16 [6] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:0 [ main::i#2 main::$4 ] ) -- aby=aby_plus_cowo1_derefidx_xby clc adc fibs+1,x - //SEG17 [7] *((const byte[15]) fibs#0+(byte) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta fibs+2,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1<(byte) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$f bcc b1 //SEG20 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.sym b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.sym index fafaccda5..916a98620 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte[15]) fibs -(const byte[15]) fibs#0 fibs = (word) 4352 +(const byte[15]) fibs#0 fibs = (word/signed word) 4352 (void()) main() (byte~) main::$1 reg byte a 11.0 (byte~) main::$3 reg byte alu 22.0 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg index cbf2958bf..e8fe43b8d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg @@ -9,15 +9,15 @@ main: scope:[main] from @4 [2] call prepare param-assignment [ ] ( main:0 [ ] ) to:main::@3 main::@3: scope:[main] from main main::@11 main::@3 main::@6 - [3] (byte) main::c#4 ← phi( main/(byte) 25 main::@6/(byte) main::c#1 main::@11/(byte) 25 ) [ main::c#4 ] ( main:0 [ main::c#4 ] ) - [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) + [3] (byte) main::c#4 ← phi( main/(byte/signed byte/word/signed word) 25 main::@6/(byte) main::c#1 main::@11/(byte/signed byte/word/signed word) 25 ) [ main::c#4 ] ( main:0 [ main::c#4 ] ) + [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) + [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) to:main::@6 main::@6: scope:[main] from main::@4 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) - [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) + [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) to:main::@7 main::@7: scope:[main] from main::@6 [8] call flip param-assignment [ ] ( main:0 [ ] ) @@ -35,23 +35,23 @@ plot: scope:[plot] from main::@10 [12] phi() [ ] ( main:0::plot:9 [ ] ) to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 - [13] (byte) plot::y#4 ← phi( plot/(byte) 16 plot::@3/(byte) plot::y#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) - [13] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 plot::@3/(byte*) plot::line#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) - [13] (byte) plot::i#3 ← phi( plot/(byte) 0 plot::@3/(byte) plot::i#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) + [13] (byte) plot::y#4 ← phi( plot/(byte/signed byte/word/signed word) 16 plot::@3/(byte) plot::y#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) + [13] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 plot::@3/(byte*) plot::line#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) + [13] (byte) plot::i#3 ← phi( plot/(byte/signed byte/word/signed word) 0 plot::@3/(byte) plot::i#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 - [14] (byte) plot::x#2 ← phi( plot::@1/(byte) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) + [14] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [14] (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [15] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ) [16] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [17] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) - [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) + [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) to:plot::@3 plot::@3: scope:[plot] from plot::@2 - [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) + [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) - [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) + [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) to:plot::@return plot::@return: scope:[plot] from plot::@3 [23] return [ ] ( main:0::plot:9 [ ] ) @@ -60,32 +60,32 @@ flip: scope:[flip] from main::@7 [24] phi() [ ] ( main:0::flip:8 [ ] ) to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - [25] (byte) flip::r#4 ← phi( flip/(byte) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) - [25] (byte) flip::dstIdx#5 ← phi( flip/(byte) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) - [25] (byte) flip::srcIdx#3 ← phi( flip/(byte) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [25] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [25] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [25] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - [26] (byte) flip::c#2 ← phi( flip::@1/(byte) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [26] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [26] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [26] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [27] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ) [28] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) - [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) + [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) - [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) + [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) to:flip::@4 flip::@4: scope:[flip] from flip::@2 [33] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) - [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) + [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 - [36] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte) 0 ) [ flip::i#2 ] ( main:0::flip:8 [ flip::i#2 ] ) + [36] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] ( main:0::flip:8 [ flip::i#2 ] ) [37] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] ( main:0::flip:8 [ flip::i#2 flip::$4 ] ) [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] ( main:0::flip:8 [ flip::i#2 ] ) [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) - [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) + [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) to:flip::@return flip::@return: scope:[flip] from flip::@3 [41] return [ ] ( main:0::flip:8 [ ] ) @@ -94,10 +94,10 @@ prepare: scope:[prepare] from main [42] phi() [ ] ( main:0::prepare:2 [ ] ) to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 - [43] (byte) prepare::i#2 ← phi( prepare/(byte) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] ) + [43] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] ) [44] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] ) [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) - [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) + [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 [47] return [ ] ( main:0::prepare:2 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log index d84d9c3bb..2a11d1855 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log @@ -54,23 +54,23 @@ Adding pre/post-modifier (byte) flip::dstIdx ← -- (byte) flip::dstIdx Adding pre/post-modifier (byte) plot::i ← ++ (byte) plot::i Adding pre/post-modifier (byte) plot::x ← ++ (byte) plot::x PROGRAM - (byte[1000]) SCREEN ← (word) 1024 - (byte[256]) buffer1 ← (word) 4096 - (byte[256]) buffer2 ← (word) 4352 + (byte[1000]) SCREEN ← (word/signed word) 1024 + (byte[256]) buffer1 ← (word/signed word) 4096 + (byte[256]) buffer2 ← (word/signed word) 4352 (byte*) RASTER ← (word) 53266 proc (void()) main() (void~) main::$0 ← call prepare main::@1: - (byte) main::c ← (byte) 25 + (byte) main::c ← (byte/signed byte/word/signed word) 25 main::@2: main::@3: - (boolean~) main::$1 ← *((byte*) RASTER) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 main::@4: - (boolean~) main::$2 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 (byte) main::c ← -- (byte) main::c - (boolean~) main::$3 ← (byte) main::c != (byte) 0 + (boolean~) main::$3 ← (byte) main::c != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 (void~) main::$4 ← call flip (void~) main::$5 ← call plot @@ -79,64 +79,64 @@ main::@return: return endproc // main() proc (void()) prepare() - (byte) prepare::i ← (byte) 0 + (byte) prepare::i ← (byte/signed byte/word/signed word) 0 prepare::@1: *((byte[256]) buffer1 + (byte) prepare::i) ← (byte) prepare::i (byte) prepare::i ← ++ (byte) prepare::i - (boolean~) prepare::$0 ← (byte) prepare::i != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 prepare::@return: return endproc // prepare() proc (void()) flip() - (byte) flip::srcIdx ← (byte) 0 - (byte) flip::dstIdx ← (byte) 15 - (byte) flip::r ← (byte) 16 + (byte) flip::srcIdx ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx ← (byte/signed byte/word/signed word) 15 + (byte) flip::r ← (byte/signed byte/word/signed word) 16 flip::@1: - (byte) flip::c ← (byte) 16 + (byte) flip::c ← (byte/signed byte/word/signed word) 16 flip::@2: (byte~) flip::$0 ← (byte[256]) buffer1 *idx (byte) flip::srcIdx *((byte[256]) buffer2 + (byte) flip::dstIdx) ← (byte~) flip::$0 (byte) flip::srcIdx ← ++ (byte) flip::srcIdx - (byte~) flip::$1 ← (byte) flip::dstIdx + (byte) 16 + (byte~) flip::$1 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 (byte) flip::dstIdx ← (byte~) flip::$1 (byte) flip::c ← -- (byte) flip::c - (boolean~) flip::$2 ← (byte) flip::c != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 (byte) flip::dstIdx ← -- (byte) flip::dstIdx (byte) flip::r ← -- (byte) flip::r - (boolean~) flip::$3 ← (byte) flip::r != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 - (byte) flip::i ← (byte) 0 + (byte) flip::i ← (byte/signed byte/word/signed word) 0 flip::@3: (byte~) flip::$4 ← (byte[256]) buffer2 *idx (byte) flip::i *((byte[256]) buffer1 + (byte) flip::i) ← (byte~) flip::$4 (byte) flip::i ← ++ (byte) flip::i - (boolean~) flip::$5 ← (byte) flip::i != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 flip::@return: return endproc // flip() proc (void()) plot() - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte~) plot::$0 - (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte/word/signed word~) plot::$0 + (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 (byte*) plot::line ← (byte*~) plot::$2 - (byte) plot::i ← (byte) 0 - (byte) plot::y ← (byte) 16 + (byte) plot::i ← (byte/signed byte/word/signed word) 0 + (byte) plot::y ← (byte/signed byte/word/signed word) 16 plot::@1: - (byte) plot::x ← (byte) 0 + (byte) plot::x ← (byte/signed byte/word/signed word) 0 plot::@2: (byte~) plot::$3 ← (byte[256]) buffer1 *idx (byte) plot::i *((byte*) plot::line + (byte) plot::x) ← (byte~) plot::$3 (byte) plot::i ← ++ (byte) plot::i (byte) plot::x ← ++ (byte) plot::x - (boolean~) plot::$4 ← (byte) plot::x < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 - (byte*~) plot::$5 ← (byte*) plot::line + (byte) 40 + (byte*~) plot::$5 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 (byte*) plot::line ← (byte*~) plot::$5 (byte) plot::y ← -- (byte) plot::y - (boolean~) plot::$6 ← (byte) plot::y != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 plot::@return: return @@ -178,7 +178,7 @@ SYMBOLS (label) main::@return (byte) main::c (void()) plot() -(byte~) plot::$0 +(byte/word/signed word~) plot::$0 (byte*~) plot::$1 (byte*~) plot::$2 (byte~) plot::$3 @@ -200,32 +200,32 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte[1000]) SCREEN ← (word) 1024 - (byte[256]) buffer1 ← (word) 4096 - (byte[256]) buffer2 ← (word) 4352 + (byte[1000]) SCREEN ← (word/signed word) 1024 + (byte[256]) buffer1 ← (word/signed word) 4096 + (byte[256]) buffer2 ← (word/signed word) 4352 (byte*) RASTER ← (word) 53266 to:@1 main: scope:[main] from (void~) main::$0 ← call prepare to:main::@1 main::@1: scope:[main] from main main::@7 - (byte) main::c ← (byte) 25 + (byte) main::c ← (byte/signed byte/word/signed word) 25 to:main::@2 main::@2: scope:[main] from main::@1 main::@6 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (boolean~) main::$1 ← *((byte*) RASTER) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 to:main::@4 main::@4: scope:[main] from main::@4 main::@5 - (boolean~) main::$2 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c ← -- (byte) main::c - (boolean~) main::$3 ← (byte) main::c != (byte) 0 + (boolean~) main::$3 ← (byte) main::c != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 @@ -241,12 +241,12 @@ main::@return: scope:[main] from main::@8 @1: scope:[] from @begin to:@2 prepare: scope:[prepare] from - (byte) prepare::i ← (byte) 0 + (byte) prepare::i ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 *((byte[256]) buffer1 + (byte) prepare::i) ← (byte) prepare::i (byte) prepare::i ← ++ (byte) prepare::i - (boolean~) prepare::$0 ← (byte) prepare::i != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 to:prepare::@2 prepare::@2: scope:[prepare] from prepare::@1 @@ -257,37 +257,37 @@ prepare::@return: scope:[prepare] from prepare::@2 @2: scope:[] from @1 to:@3 flip: scope:[flip] from - (byte) flip::srcIdx ← (byte) 0 - (byte) flip::dstIdx ← (byte) 15 - (byte) flip::r ← (byte) 16 + (byte) flip::srcIdx ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx ← (byte/signed byte/word/signed word) 15 + (byte) flip::r ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - (byte) flip::c ← (byte) 16 + (byte) flip::c ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1 *idx (byte) flip::srcIdx *((byte[256]) buffer2 + (byte) flip::dstIdx) ← (byte~) flip::$0 (byte) flip::srcIdx ← ++ (byte) flip::srcIdx - (byte~) flip::$1 ← (byte) flip::dstIdx + (byte) 16 + (byte~) flip::$1 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 (byte) flip::dstIdx ← (byte~) flip::$1 (byte) flip::c ← -- (byte) flip::c - (boolean~) flip::$2 ← (byte) flip::c != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx ← -- (byte) flip::dstIdx (byte) flip::r ← -- (byte) flip::r - (boolean~) flip::$3 ← (byte) flip::r != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 - (byte) flip::i ← (byte) 0 + (byte) flip::i ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2 *idx (byte) flip::i *((byte[256]) buffer1 + (byte) flip::i) ← (byte~) flip::$4 (byte) flip::i ← ++ (byte) flip::i - (boolean~) flip::$5 ← (byte) flip::i != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 to:flip::@6 flip::@6: scope:[flip] from flip::@3 @@ -298,29 +298,29 @@ flip::@return: scope:[flip] from flip::@6 @3: scope:[] from @2 to:@4 plot: scope:[plot] from - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte~) plot::$0 - (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte/word/signed word~) plot::$0 + (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 (byte*) plot::line ← (byte*~) plot::$2 - (byte) plot::i ← (byte) 0 - (byte) plot::y ← (byte) 16 + (byte) plot::i ← (byte/signed byte/word/signed word) 0 + (byte) plot::y ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 - (byte) plot::x ← (byte) 0 + (byte) plot::x ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte~) plot::$3 ← (byte[256]) buffer1 *idx (byte) plot::i *((byte*) plot::line + (byte) plot::x) ← (byte~) plot::$3 (byte) plot::i ← ++ (byte) plot::i (byte) plot::x ← ++ (byte) plot::x - (boolean~) plot::$4 ← (byte) plot::x < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*~) plot::$5 ← (byte*) plot::line + (byte) 40 + (byte*~) plot::$5 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 (byte*) plot::line ← (byte*~) plot::$5 (byte) plot::y ← -- (byte) plot::y - (boolean~) plot::$6 ← (byte) plot::y != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 to:plot::@4 plot::@4: scope:[plot] from plot::@3 @@ -343,30 +343,30 @@ Removing empty block @3 Removing empty block plot::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte[1000]) SCREEN ← (word) 1024 - (byte[256]) buffer1 ← (word) 4096 - (byte[256]) buffer2 ← (word) 4352 + (byte[1000]) SCREEN ← (word/signed word) 1024 + (byte[256]) buffer1 ← (word/signed word) 4096 + (byte[256]) buffer2 ← (word/signed word) 4352 (byte*) RASTER ← (word) 53266 to:@4 main: scope:[main] from (void~) main::$0 ← call prepare to:main::@1 main::@1: scope:[main] from main main::@7 - (byte) main::c ← (byte) 25 + (byte) main::c ← (byte/signed byte/word/signed word) 25 to:main::@3 main::@2: scope:[main] from main::@6 to:main::@3 main::@3: scope:[main] from main::@1 main::@2 main::@3 - (boolean~) main::$1 ← *((byte*) RASTER) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - (boolean~) main::$2 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c ← -- (byte) main::c - (boolean~) main::$3 ← (byte) main::c != (byte) 0 + (boolean~) main::$3 ← (byte) main::c != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 @@ -378,78 +378,78 @@ main::@return: scope:[main] from main::@7 return to:@return prepare: scope:[prepare] from - (byte) prepare::i ← (byte) 0 + (byte) prepare::i ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 *((byte[256]) buffer1 + (byte) prepare::i) ← (byte) prepare::i (byte) prepare::i ← ++ (byte) prepare::i - (boolean~) prepare::$0 ← (byte) prepare::i != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return to:@return flip: scope:[flip] from - (byte) flip::srcIdx ← (byte) 0 - (byte) flip::dstIdx ← (byte) 15 - (byte) flip::r ← (byte) 16 + (byte) flip::srcIdx ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx ← (byte/signed byte/word/signed word) 15 + (byte) flip::r ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - (byte) flip::c ← (byte) 16 + (byte) flip::c ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1 *idx (byte) flip::srcIdx *((byte[256]) buffer2 + (byte) flip::dstIdx) ← (byte~) flip::$0 (byte) flip::srcIdx ← ++ (byte) flip::srcIdx - (byte~) flip::$1 ← (byte) flip::dstIdx + (byte) 16 + (byte~) flip::$1 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 (byte) flip::dstIdx ← (byte~) flip::$1 (byte) flip::c ← -- (byte) flip::c - (boolean~) flip::$2 ← (byte) flip::c != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx ← -- (byte) flip::dstIdx (byte) flip::r ← -- (byte) flip::r - (boolean~) flip::$3 ← (byte) flip::r != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 - (byte) flip::i ← (byte) 0 + (byte) flip::i ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2 *idx (byte) flip::i *((byte[256]) buffer1 + (byte) flip::i) ← (byte~) flip::$4 (byte) flip::i ← ++ (byte) flip::i - (boolean~) flip::$5 ← (byte) flip::i != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte~) plot::$0 - (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte/word/signed word~) plot::$0 + (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 (byte*) plot::line ← (byte*~) plot::$2 - (byte) plot::i ← (byte) 0 - (byte) plot::y ← (byte) 16 + (byte) plot::i ← (byte/signed byte/word/signed word) 0 + (byte) plot::y ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 - (byte) plot::x ← (byte) 0 + (byte) plot::x ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte~) plot::$3 ← (byte[256]) buffer1 *idx (byte) plot::i *((byte*) plot::line + (byte) plot::x) ← (byte~) plot::$3 (byte) plot::i ← ++ (byte) plot::i (byte) plot::x ← ++ (byte) plot::x - (boolean~) plot::$4 ← (byte) plot::x < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*~) plot::$5 ← (byte*) plot::line + (byte) 40 + (byte*~) plot::$5 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 (byte*) plot::line ← (byte*~) plot::$5 (byte) plot::y ← -- (byte) plot::y - (boolean~) plot::$6 ← (byte) plot::y != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 @@ -464,9 +464,9 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte[1000]) SCREEN ← (word) 1024 - (byte[256]) buffer1 ← (word) 4096 - (byte[256]) buffer2 ← (word) 4352 + (byte[1000]) SCREEN ← (word/signed word) 1024 + (byte[256]) buffer1 ← (word/signed word) 4096 + (byte[256]) buffer2 ← (word/signed word) 4352 (byte*) RASTER ← (word) 53266 to:@4 main: scope:[main] from @4 @@ -475,21 +475,21 @@ main: scope:[main] from @4 main::@9: scope:[main] from main to:main::@1 main::@1: scope:[main] from main::@11 main::@9 - (byte) main::c ← (byte) 25 + (byte) main::c ← (byte/signed byte/word/signed word) 25 to:main::@3 main::@2: scope:[main] from main::@6 to:main::@3 main::@3: scope:[main] from main::@1 main::@2 main::@3 - (boolean~) main::$1 ← *((byte*) RASTER) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - (boolean~) main::$2 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c ← -- (byte) main::c - (boolean~) main::$3 ← (byte) main::c != (byte) 0 + (boolean~) main::$3 ← (byte) main::c != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 @@ -505,78 +505,78 @@ main::@return: scope:[main] from main::@11 return to:@return prepare: scope:[prepare] from main - (byte) prepare::i ← (byte) 0 + (byte) prepare::i ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 *((byte[256]) buffer1 + (byte) prepare::i) ← (byte) prepare::i (byte) prepare::i ← ++ (byte) prepare::i - (boolean~) prepare::$0 ← (byte) prepare::i != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return to:@return flip: scope:[flip] from main::@7 - (byte) flip::srcIdx ← (byte) 0 - (byte) flip::dstIdx ← (byte) 15 - (byte) flip::r ← (byte) 16 + (byte) flip::srcIdx ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx ← (byte/signed byte/word/signed word) 15 + (byte) flip::r ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - (byte) flip::c ← (byte) 16 + (byte) flip::c ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1 *idx (byte) flip::srcIdx *((byte[256]) buffer2 + (byte) flip::dstIdx) ← (byte~) flip::$0 (byte) flip::srcIdx ← ++ (byte) flip::srcIdx - (byte~) flip::$1 ← (byte) flip::dstIdx + (byte) 16 + (byte~) flip::$1 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 (byte) flip::dstIdx ← (byte~) flip::$1 (byte) flip::c ← -- (byte) flip::c - (boolean~) flip::$2 ← (byte) flip::c != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx ← -- (byte) flip::dstIdx (byte) flip::r ← -- (byte) flip::r - (boolean~) flip::$3 ← (byte) flip::r != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 - (byte) flip::i ← (byte) 0 + (byte) flip::i ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2 *idx (byte) flip::i *((byte[256]) buffer1 + (byte) flip::i) ← (byte~) flip::$4 (byte) flip::i ← ++ (byte) flip::i - (boolean~) flip::$5 ← (byte) flip::i != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte~) plot::$0 - (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN + (byte/word/signed word~) plot::$0 + (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 (byte*) plot::line ← (byte*~) plot::$2 - (byte) plot::i ← (byte) 0 - (byte) plot::y ← (byte) 16 + (byte) plot::i ← (byte/signed byte/word/signed word) 0 + (byte) plot::y ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 - (byte) plot::x ← (byte) 0 + (byte) plot::x ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte~) plot::$3 ← (byte[256]) buffer1 *idx (byte) plot::i *((byte*) plot::line + (byte) plot::x) ← (byte~) plot::$3 (byte) plot::i ← ++ (byte) plot::i (byte) plot::x ← ++ (byte) plot::x - (boolean~) plot::$4 ← (byte) plot::x < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*~) plot::$5 ← (byte*) plot::line + (byte) 40 + (byte*~) plot::$5 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 (byte*) plot::line ← (byte*~) plot::$5 (byte) plot::y ← -- (byte) plot::y - (boolean~) plot::$6 ← (byte) plot::y != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 @@ -602,9 +602,9 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[1000]) SCREEN#0 ← (word) 1024 - (byte[256]) buffer1#0 ← (word) 4096 - (byte[256]) buffer2#0 ← (word) 4352 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) buffer1#0 ← (word/signed word) 4096 + (byte[256]) buffer2#0 ← (word/signed word) 4352 (byte*) RASTER#0 ← (word) 53266 to:@4 main: scope:[main] from @4 @@ -625,7 +625,7 @@ main::@1: scope:[main] from main::@11 main::@9 (byte[256]) buffer1#20 ← phi( main::@11/(byte[256]) buffer1#22 main::@9/(byte[256]) buffer1#23 ) (byte[1000]) SCREEN#7 ← phi( main::@11/(byte[1000]) SCREEN#9 main::@9/(byte[1000]) SCREEN#10 ) (byte*) RASTER#3 ← phi( main::@11/(byte*) RASTER#5 main::@9/(byte*) RASTER#6 ) - (byte) main::c#0 ← (byte) 25 + (byte) main::c#0 ← (byte/signed byte/word/signed word) 25 to:main::@3 main::@2: scope:[main] from main::@6 (byte[256]) buffer2#12 ← phi( main::@6/(byte[256]) buffer2#8 ) @@ -640,7 +640,7 @@ main::@3: scope:[main] from main::@1 main::@2 main::@3 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@2/(byte[1000]) SCREEN#8 main::@3/(byte[1000]) SCREEN#6 ) (byte) main::c#4 ← phi( main::@1/(byte) main::c#0 main::@2/(byte) main::c#5 main::@3/(byte) main::c#4 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#4 main::@3/(byte*) RASTER#1 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 @@ -649,7 +649,7 @@ main::@4: scope:[main] from main::@3 main::@4 (byte[1000]) SCREEN#5 ← phi( main::@3/(byte[1000]) SCREEN#6 main::@4/(byte[1000]) SCREEN#5 ) (byte) main::c#3 ← phi( main::@3/(byte) main::c#4 main::@4/(byte) main::c#3 ) (byte*) RASTER#2 ← phi( main::@3/(byte*) RASTER#1 main::@4/(byte*) RASTER#2 ) - (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 @@ -659,7 +659,7 @@ main::@6: scope:[main] from main::@4 (byte*) RASTER#7 ← phi( main::@4/(byte*) RASTER#2 ) (byte) main::c#2 ← phi( main::@4/(byte) main::c#3 ) (byte) main::c#1 ← -- (byte) main::c#2 - (boolean~) main::$3 ← (byte) main::c#1 != (byte) 0 + (boolean~) main::$3 ← (byte) main::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 @@ -688,14 +688,14 @@ main::@return: scope:[main] from main::@11 to:@return prepare: scope:[prepare] from main (byte[256]) buffer1#5 ← phi( main/(byte[256]) buffer1#9 ) - (byte) prepare::i#0 ← (byte) 0 + (byte) prepare::i#0 ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 (byte[256]) buffer1#1 ← phi( prepare/(byte[256]) buffer1#5 prepare::@1/(byte[256]) buffer1#1 ) (byte) prepare::i#2 ← phi( prepare/(byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((byte[256]) buffer1#1 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 @@ -704,9 +704,9 @@ prepare::@return: scope:[prepare] from prepare::@1 flip: scope:[flip] from main::@7 (byte[256]) buffer2#5 ← phi( main::@7/(byte[256]) buffer2#7 ) (byte[256]) buffer1#10 ← phi( main::@7/(byte[256]) buffer1#15 ) - (byte) flip::srcIdx#0 ← (byte) 0 - (byte) flip::dstIdx#0 ← (byte) 15 - (byte) flip::r#0 ← (byte) 16 + (byte) flip::srcIdx#0 ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx#0 ← (byte/signed byte/word/signed word) 15 + (byte) flip::r#0 ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 (byte) flip::r#4 ← phi( flip/(byte) flip::r#0 flip::@4/(byte) flip::r#1 ) @@ -714,7 +714,7 @@ flip::@1: scope:[flip] from flip flip::@4 (byte[256]) buffer2#3 ← phi( flip/(byte[256]) buffer2#5 flip::@4/(byte[256]) buffer2#6 ) (byte) flip::srcIdx#3 ← phi( flip/(byte) flip::srcIdx#0 flip::@4/(byte) flip::srcIdx#4 ) (byte[256]) buffer1#6 ← phi( flip/(byte[256]) buffer1#10 flip::@4/(byte[256]) buffer1#11 ) - (byte) flip::c#0 ← (byte) 16 + (byte) flip::c#0 ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::r#3 ← phi( flip::@1/(byte) flip::r#4 flip::@2/(byte) flip::r#3 ) @@ -726,10 +726,10 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#2 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte~) flip::$1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte~) flip::$1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::dstIdx#1 ← (byte~) flip::$1 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 @@ -740,13 +740,13 @@ flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#4 ← phi( flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#4 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte[256]) buffer1#7 ← phi( flip::@4/(byte[256]) buffer1#11 ) (byte[256]) buffer2#4 ← phi( flip::@4/(byte[256]) buffer2#6 ) - (byte) flip::i#0 ← (byte) 0 + (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@3/(byte[256]) buffer1#3 flip::@5/(byte[256]) buffer1#7 ) @@ -755,7 +755,7 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 @@ -764,19 +764,19 @@ flip::@return: scope:[flip] from flip::@3 plot: scope:[plot] from main::@10 (byte[256]) buffer1#12 ← phi( main::@10/(byte[256]) buffer1#16 ) (byte[1000]) SCREEN#1 ← phi( main::@10/(byte[1000]) SCREEN#2 ) - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte~) plot::$0 - (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte/word/signed word~) plot::$0 + (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 (byte*) plot::line#0 ← (byte*~) plot::$2 - (byte) plot::i#0 ← (byte) 0 - (byte) plot::y#0 ← (byte) 16 + (byte) plot::i#0 ← (byte/signed byte/word/signed word) 0 + (byte) plot::y#0 ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 ) (byte*) plot::line#4 ← phi( plot/(byte*) plot::line#0 plot::@3/(byte*) plot::line#1 ) (byte) plot::i#3 ← phi( plot/(byte) plot::i#0 plot::@3/(byte) plot::i#4 ) (byte[256]) buffer1#8 ← phi( plot/(byte[256]) buffer1#12 plot::@3/(byte[256]) buffer1#13 ) - (byte) plot::x#0 ← (byte) 0 + (byte) plot::x#0 ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::y#3 ← phi( plot::@1/(byte) plot::y#4 plot::@2/(byte) plot::y#3 ) @@ -788,7 +788,7 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 @@ -796,10 +796,10 @@ plot::@3: scope:[plot] from plot::@2 (byte[256]) buffer1#13 ← phi( plot::@2/(byte[256]) buffer1#4 ) (byte) plot::y#2 ← phi( plot::@2/(byte) plot::y#3 ) (byte*) plot::line#3 ← phi( plot::@2/(byte*) plot::line#2 ) - (byte*~) plot::$5 ← (byte*) plot::line#3 + (byte) 40 + (byte*~) plot::$5 ← (byte*) plot::line#3 + (byte/signed byte/word/signed word) 40 (byte*) plot::line#1 ← (byte*~) plot::$5 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 @@ -818,9 +818,9 @@ plot::@return: scope:[plot] from plot::@3 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte[1000]) SCREEN#0 ← (word) 1024 - (byte[256]) buffer1#0 ← (word) 4096 - (byte[256]) buffer2#0 ← (word) 4352 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) buffer1#0 ← (word/signed word) 4096 + (byte[256]) buffer2#0 ← (word/signed word) 4352 (byte*) RASTER#0 ← (word) 53266 to:@4 main: scope:[main] from @4 @@ -841,7 +841,7 @@ main::@1: scope:[main] from main::@11 main::@9 (byte[256]) buffer1#20 ← phi( main::@11/(byte[256]) buffer1#22 main::@9/(byte[256]) buffer1#23 ) (byte[1000]) SCREEN#7 ← phi( main::@11/(byte[1000]) SCREEN#9 main::@9/(byte[1000]) SCREEN#10 ) (byte*) RASTER#3 ← phi( main::@11/(byte*) RASTER#5 main::@9/(byte*) RASTER#6 ) - (byte) main::c#0 ← (byte) 25 + (byte) main::c#0 ← (byte/signed byte/word/signed word) 25 to:main::@3 main::@2: scope:[main] from main::@6 (byte[256]) buffer2#12 ← phi( main::@6/(byte[256]) buffer2#8 ) @@ -856,7 +856,7 @@ main::@3: scope:[main] from main::@1 main::@2 main::@3 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@2/(byte[1000]) SCREEN#8 main::@3/(byte[1000]) SCREEN#6 ) (byte) main::c#4 ← phi( main::@1/(byte) main::c#0 main::@2/(byte) main::c#5 main::@3/(byte) main::c#4 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#4 main::@3/(byte*) RASTER#1 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 @@ -865,7 +865,7 @@ main::@4: scope:[main] from main::@3 main::@4 (byte[1000]) SCREEN#5 ← phi( main::@3/(byte[1000]) SCREEN#6 main::@4/(byte[1000]) SCREEN#5 ) (byte) main::c#3 ← phi( main::@3/(byte) main::c#4 main::@4/(byte) main::c#3 ) (byte*) RASTER#2 ← phi( main::@3/(byte*) RASTER#1 main::@4/(byte*) RASTER#2 ) - (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 @@ -875,7 +875,7 @@ main::@6: scope:[main] from main::@4 (byte*) RASTER#7 ← phi( main::@4/(byte*) RASTER#2 ) (byte) main::c#2 ← phi( main::@4/(byte) main::c#3 ) (byte) main::c#1 ← -- (byte) main::c#2 - (boolean~) main::$3 ← (byte) main::c#1 != (byte) 0 + (boolean~) main::$3 ← (byte) main::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 @@ -904,14 +904,14 @@ main::@return: scope:[main] from main::@11 to:@return prepare: scope:[prepare] from main (byte[256]) buffer1#5 ← phi( main/(byte[256]) buffer1#9 ) - (byte) prepare::i#0 ← (byte) 0 + (byte) prepare::i#0 ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 (byte[256]) buffer1#1 ← phi( prepare/(byte[256]) buffer1#5 prepare::@1/(byte[256]) buffer1#1 ) (byte) prepare::i#2 ← phi( prepare/(byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((byte[256]) buffer1#1 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 @@ -920,9 +920,9 @@ prepare::@return: scope:[prepare] from prepare::@1 flip: scope:[flip] from main::@7 (byte[256]) buffer2#5 ← phi( main::@7/(byte[256]) buffer2#7 ) (byte[256]) buffer1#10 ← phi( main::@7/(byte[256]) buffer1#15 ) - (byte) flip::srcIdx#0 ← (byte) 0 - (byte) flip::dstIdx#0 ← (byte) 15 - (byte) flip::r#0 ← (byte) 16 + (byte) flip::srcIdx#0 ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx#0 ← (byte/signed byte/word/signed word) 15 + (byte) flip::r#0 ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 (byte) flip::r#4 ← phi( flip/(byte) flip::r#0 flip::@4/(byte) flip::r#1 ) @@ -930,7 +930,7 @@ flip::@1: scope:[flip] from flip flip::@4 (byte[256]) buffer2#3 ← phi( flip/(byte[256]) buffer2#5 flip::@4/(byte[256]) buffer2#6 ) (byte) flip::srcIdx#3 ← phi( flip/(byte) flip::srcIdx#0 flip::@4/(byte) flip::srcIdx#4 ) (byte[256]) buffer1#6 ← phi( flip/(byte[256]) buffer1#10 flip::@4/(byte[256]) buffer1#11 ) - (byte) flip::c#0 ← (byte) 16 + (byte) flip::c#0 ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::r#3 ← phi( flip::@1/(byte) flip::r#4 flip::@2/(byte) flip::r#3 ) @@ -942,10 +942,10 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#2 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte~) flip::$1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte~) flip::$1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::dstIdx#1 ← (byte~) flip::$1 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 @@ -956,13 +956,13 @@ flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#4 ← phi( flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#4 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte[256]) buffer1#7 ← phi( flip::@4/(byte[256]) buffer1#11 ) (byte[256]) buffer2#4 ← phi( flip::@4/(byte[256]) buffer2#6 ) - (byte) flip::i#0 ← (byte) 0 + (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@3/(byte[256]) buffer1#3 flip::@5/(byte[256]) buffer1#7 ) @@ -971,7 +971,7 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 @@ -980,19 +980,19 @@ flip::@return: scope:[flip] from flip::@3 plot: scope:[plot] from main::@10 (byte[256]) buffer1#12 ← phi( main::@10/(byte[256]) buffer1#16 ) (byte[1000]) SCREEN#1 ← phi( main::@10/(byte[1000]) SCREEN#2 ) - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte~) plot::$0 - (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte/word/signed word~) plot::$0 + (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 (byte*) plot::line#0 ← (byte*~) plot::$2 - (byte) plot::i#0 ← (byte) 0 - (byte) plot::y#0 ← (byte) 16 + (byte) plot::i#0 ← (byte/signed byte/word/signed word) 0 + (byte) plot::y#0 ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 ) (byte*) plot::line#4 ← phi( plot/(byte*) plot::line#0 plot::@3/(byte*) plot::line#1 ) (byte) plot::i#3 ← phi( plot/(byte) plot::i#0 plot::@3/(byte) plot::i#4 ) (byte[256]) buffer1#8 ← phi( plot/(byte[256]) buffer1#12 plot::@3/(byte[256]) buffer1#13 ) - (byte) plot::x#0 ← (byte) 0 + (byte) plot::x#0 ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::y#3 ← phi( plot::@1/(byte) plot::y#4 plot::@2/(byte) plot::y#3 ) @@ -1004,7 +1004,7 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 @@ -1012,10 +1012,10 @@ plot::@3: scope:[plot] from plot::@2 (byte[256]) buffer1#13 ← phi( plot::@2/(byte[256]) buffer1#4 ) (byte) plot::y#2 ← phi( plot::@2/(byte) plot::y#3 ) (byte*) plot::line#3 ← phi( plot::@2/(byte*) plot::line#2 ) - (byte*~) plot::$5 ← (byte*) plot::line#3 + (byte) 40 + (byte*~) plot::$5 ← (byte*) plot::line#3 + (byte/signed byte/word/signed word) 40 (byte*) plot::line#1 ← (byte*~) plot::$5 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 @@ -1170,7 +1170,7 @@ INITIAL SSA SYMBOL TABLE (byte) main::c#4 (byte) main::c#5 (void()) plot() -(byte~) plot::$0 +(byte/word/signed word~) plot::$0 (byte*~) plot::$1 (byte*~) plot::$2 (byte~) plot::$3 @@ -1216,9 +1216,9 @@ Culled Empty Block (label) @5 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte[1000]) SCREEN#0 ← (word) 1024 - (byte[256]) buffer1#0 ← (word) 4096 - (byte[256]) buffer2#0 ← (word) 4352 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) buffer1#0 ← (word/signed word) 4096 + (byte[256]) buffer2#0 ← (word/signed word) 4352 (byte*) RASTER#0 ← (word) 53266 to:@4 main: scope:[main] from @4 @@ -1239,7 +1239,7 @@ main::@1: scope:[main] from main::@11 main::@9 (byte[256]) buffer1#20 ← phi( main::@11/(byte[256]) buffer1#22 main::@9/(byte[256]) buffer1#23 ) (byte[1000]) SCREEN#7 ← phi( main::@11/(byte[1000]) SCREEN#9 main::@9/(byte[1000]) SCREEN#10 ) (byte*) RASTER#3 ← phi( main::@11/(byte*) RASTER#5 main::@9/(byte*) RASTER#6 ) - (byte) main::c#0 ← (byte) 25 + (byte) main::c#0 ← (byte/signed byte/word/signed word) 25 to:main::@3 main::@2: scope:[main] from main::@6 (byte[256]) buffer2#12 ← phi( main::@6/(byte[256]) buffer2#8 ) @@ -1254,7 +1254,7 @@ main::@3: scope:[main] from main::@1 main::@2 main::@3 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@2/(byte[1000]) SCREEN#8 main::@3/(byte[1000]) SCREEN#6 ) (byte) main::c#4 ← phi( main::@1/(byte) main::c#0 main::@2/(byte) main::c#5 main::@3/(byte) main::c#4 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#4 main::@3/(byte*) RASTER#1 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 @@ -1263,7 +1263,7 @@ main::@4: scope:[main] from main::@3 main::@4 (byte[1000]) SCREEN#5 ← phi( main::@3/(byte[1000]) SCREEN#6 main::@4/(byte[1000]) SCREEN#5 ) (byte) main::c#3 ← phi( main::@3/(byte) main::c#4 main::@4/(byte) main::c#3 ) (byte*) RASTER#2 ← phi( main::@3/(byte*) RASTER#1 main::@4/(byte*) RASTER#2 ) - (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 @@ -1273,7 +1273,7 @@ main::@6: scope:[main] from main::@4 (byte*) RASTER#7 ← phi( main::@4/(byte*) RASTER#2 ) (byte) main::c#2 ← phi( main::@4/(byte) main::c#3 ) (byte) main::c#1 ← -- (byte) main::c#2 - (boolean~) main::$3 ← (byte) main::c#1 != (byte) 0 + (boolean~) main::$3 ← (byte) main::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 @@ -1302,14 +1302,14 @@ main::@return: scope:[main] from main::@11 to:@return prepare: scope:[prepare] from main (byte[256]) buffer1#5 ← phi( main/(byte[256]) buffer1#9 ) - (byte) prepare::i#0 ← (byte) 0 + (byte) prepare::i#0 ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 (byte[256]) buffer1#1 ← phi( prepare/(byte[256]) buffer1#5 prepare::@1/(byte[256]) buffer1#1 ) (byte) prepare::i#2 ← phi( prepare/(byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((byte[256]) buffer1#1 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 @@ -1318,9 +1318,9 @@ prepare::@return: scope:[prepare] from prepare::@1 flip: scope:[flip] from main::@7 (byte[256]) buffer2#5 ← phi( main::@7/(byte[256]) buffer2#7 ) (byte[256]) buffer1#10 ← phi( main::@7/(byte[256]) buffer1#15 ) - (byte) flip::srcIdx#0 ← (byte) 0 - (byte) flip::dstIdx#0 ← (byte) 15 - (byte) flip::r#0 ← (byte) 16 + (byte) flip::srcIdx#0 ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx#0 ← (byte/signed byte/word/signed word) 15 + (byte) flip::r#0 ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 (byte) flip::r#4 ← phi( flip/(byte) flip::r#0 flip::@4/(byte) flip::r#1 ) @@ -1328,7 +1328,7 @@ flip::@1: scope:[flip] from flip flip::@4 (byte[256]) buffer2#3 ← phi( flip/(byte[256]) buffer2#5 flip::@4/(byte[256]) buffer2#6 ) (byte) flip::srcIdx#3 ← phi( flip/(byte) flip::srcIdx#0 flip::@4/(byte) flip::srcIdx#4 ) (byte[256]) buffer1#6 ← phi( flip/(byte[256]) buffer1#10 flip::@4/(byte[256]) buffer1#11 ) - (byte) flip::c#0 ← (byte) 16 + (byte) flip::c#0 ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::r#3 ← phi( flip::@1/(byte) flip::r#4 flip::@2/(byte) flip::r#3 ) @@ -1340,10 +1340,10 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#2 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte~) flip::$1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte~) flip::$1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::dstIdx#1 ← (byte~) flip::$1 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 @@ -1354,13 +1354,13 @@ flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#4 ← phi( flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#4 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte[256]) buffer1#7 ← phi( flip::@4/(byte[256]) buffer1#11 ) (byte[256]) buffer2#4 ← phi( flip::@4/(byte[256]) buffer2#6 ) - (byte) flip::i#0 ← (byte) 0 + (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@3/(byte[256]) buffer1#3 flip::@5/(byte[256]) buffer1#7 ) @@ -1369,7 +1369,7 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 @@ -1378,19 +1378,19 @@ flip::@return: scope:[flip] from flip::@3 plot: scope:[plot] from main::@10 (byte[256]) buffer1#12 ← phi( main::@10/(byte[256]) buffer1#16 ) (byte[1000]) SCREEN#1 ← phi( main::@10/(byte[1000]) SCREEN#2 ) - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte~) plot::$0 - (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte) 12 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte/word/signed word~) plot::$0 + (byte*~) plot::$2 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 (byte*) plot::line#0 ← (byte*~) plot::$2 - (byte) plot::i#0 ← (byte) 0 - (byte) plot::y#0 ← (byte) 16 + (byte) plot::i#0 ← (byte/signed byte/word/signed word) 0 + (byte) plot::y#0 ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 ) (byte*) plot::line#4 ← phi( plot/(byte*) plot::line#0 plot::@3/(byte*) plot::line#1 ) (byte) plot::i#3 ← phi( plot/(byte) plot::i#0 plot::@3/(byte) plot::i#4 ) (byte[256]) buffer1#8 ← phi( plot/(byte[256]) buffer1#12 plot::@3/(byte[256]) buffer1#13 ) - (byte) plot::x#0 ← (byte) 0 + (byte) plot::x#0 ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::y#3 ← phi( plot::@1/(byte) plot::y#4 plot::@2/(byte) plot::y#3 ) @@ -1402,7 +1402,7 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 @@ -1410,10 +1410,10 @@ plot::@3: scope:[plot] from plot::@2 (byte[256]) buffer1#13 ← phi( plot::@2/(byte[256]) buffer1#4 ) (byte) plot::y#2 ← phi( plot::@2/(byte) plot::y#3 ) (byte*) plot::line#3 ← phi( plot::@2/(byte*) plot::line#2 ) - (byte*~) plot::$5 ← (byte*) plot::line#3 + (byte) 40 + (byte*~) plot::$5 ← (byte*) plot::line#3 + (byte/signed byte/word/signed word) 40 (byte*) plot::line#1 ← (byte*~) plot::$5 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 @@ -1454,9 +1454,9 @@ Alias (byte*) plot::line#1 = (byte*~) plot::$5 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[1000]) SCREEN#0 ← (word) 1024 - (byte[256]) buffer1#0 ← (word) 4096 - (byte[256]) buffer2#0 ← (word) 4352 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) buffer1#0 ← (word/signed word) 4096 + (byte[256]) buffer2#0 ← (word/signed word) 4352 (byte*) RASTER#0 ← (word) 53266 to:@4 main: scope:[main] from @4 @@ -1469,7 +1469,7 @@ main::@1: scope:[main] from main::@11 main::@9 (byte[256]) buffer1#20 ← phi( main::@11/(byte[256]) buffer1#10 main::@9/(byte[256]) buffer1#0 ) (byte[1000]) SCREEN#7 ← phi( main::@11/(byte[1000]) SCREEN#1 main::@9/(byte[1000]) SCREEN#0 ) (byte*) RASTER#3 ← phi( main::@11/(byte*) RASTER#11 main::@9/(byte*) RASTER#0 ) - (byte) main::c#0 ← (byte) 25 + (byte) main::c#0 ← (byte/signed byte/word/signed word) 25 to:main::@3 main::@2: scope:[main] from main::@6 to:main::@3 @@ -1479,7 +1479,7 @@ main::@3: scope:[main] from main::@1 main::@2 main::@3 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@2/(byte[1000]) SCREEN#1 main::@3/(byte[1000]) SCREEN#6 ) (byte) main::c#4 ← phi( main::@1/(byte) main::c#0 main::@2/(byte) main::c#1 main::@3/(byte) main::c#4 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#11 main::@3/(byte*) RASTER#1 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 @@ -1488,12 +1488,12 @@ main::@4: scope:[main] from main::@3 main::@4 (byte[1000]) SCREEN#1 ← phi( main::@3/(byte[1000]) SCREEN#6 main::@4/(byte[1000]) SCREEN#1 ) (byte) main::c#2 ← phi( main::@3/(byte) main::c#4 main::@4/(byte) main::c#2 ) (byte*) RASTER#11 ← phi( main::@3/(byte*) RASTER#1 main::@4/(byte*) RASTER#11 ) - (boolean~) main::$2 ← *((byte*) RASTER#11) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#11) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#2 - (boolean~) main::$3 ← (byte) main::c#1 != (byte) 0 + (boolean~) main::$3 ← (byte) main::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 @@ -1509,23 +1509,23 @@ main::@return: scope:[main] from main::@11 return to:@return prepare: scope:[prepare] from main - (byte) prepare::i#0 ← (byte) 0 + (byte) prepare::i#0 ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 (byte[256]) buffer1#1 ← phi( prepare/(byte[256]) buffer1#0 prepare::@1/(byte[256]) buffer1#1 ) (byte) prepare::i#2 ← phi( prepare/(byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((byte[256]) buffer1#1 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return to:@return flip: scope:[flip] from main::@7 - (byte) flip::srcIdx#0 ← (byte) 0 - (byte) flip::dstIdx#0 ← (byte) 15 - (byte) flip::r#0 ← (byte) 16 + (byte) flip::srcIdx#0 ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx#0 ← (byte/signed byte/word/signed word) 15 + (byte) flip::r#0 ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 (byte) flip::r#4 ← phi( flip/(byte) flip::r#0 flip::@4/(byte) flip::r#1 ) @@ -1533,7 +1533,7 @@ flip::@1: scope:[flip] from flip flip::@4 (byte[256]) buffer2#3 ← phi( flip/(byte[256]) buffer2#12 flip::@4/(byte[256]) buffer2#1 ) (byte) flip::srcIdx#3 ← phi( flip/(byte) flip::srcIdx#0 flip::@4/(byte) flip::srcIdx#1 ) (byte[256]) buffer1#6 ← phi( flip/(byte[256]) buffer1#10 flip::@4/(byte[256]) buffer1#11 ) - (byte) flip::c#0 ← (byte) 16 + (byte) flip::c#0 ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::r#2 ← phi( flip::@1/(byte) flip::r#4 flip::@2/(byte) flip::r#2 ) @@ -1545,19 +1545,19 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#11 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 - (byte) flip::i#0 ← (byte) 0 + (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@3/(byte[256]) buffer1#3 flip::@5/(byte[256]) buffer1#11 ) @@ -1566,25 +1566,25 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte~) plot::$0 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte) 12 - (byte) plot::i#0 ← (byte) 0 - (byte) plot::y#0 ← (byte) 16 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte/word/signed word~) plot::$0 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 + (byte) plot::i#0 ← (byte/signed byte/word/signed word) 0 + (byte) plot::y#0 ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 ) (byte*) plot::line#4 ← phi( plot/(byte*) plot::line#0 plot::@3/(byte*) plot::line#1 ) (byte) plot::i#3 ← phi( plot/(byte) plot::i#0 plot::@3/(byte) plot::i#1 ) (byte[256]) buffer1#8 ← phi( plot/(byte[256]) buffer1#10 plot::@3/(byte[256]) buffer1#13 ) - (byte) plot::x#0 ← (byte) 0 + (byte) plot::x#0 ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::y#2 ← phi( plot::@1/(byte) plot::y#4 plot::@2/(byte) plot::y#2 ) @@ -1596,13 +1596,13 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#2 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#2 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 @@ -1637,9 +1637,9 @@ Self Phi Eliminated (byte) plot::y#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[1000]) SCREEN#0 ← (word) 1024 - (byte[256]) buffer1#0 ← (word) 4096 - (byte[256]) buffer2#0 ← (word) 4352 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) buffer1#0 ← (word/signed word) 4096 + (byte[256]) buffer2#0 ← (word/signed word) 4352 (byte*) RASTER#0 ← (word) 53266 to:@4 main: scope:[main] from @4 @@ -1652,7 +1652,7 @@ main::@1: scope:[main] from main::@11 main::@9 (byte[256]) buffer1#20 ← phi( main::@11/(byte[256]) buffer1#10 main::@9/(byte[256]) buffer1#0 ) (byte[1000]) SCREEN#7 ← phi( main::@11/(byte[1000]) SCREEN#1 main::@9/(byte[1000]) SCREEN#0 ) (byte*) RASTER#3 ← phi( main::@11/(byte*) RASTER#11 main::@9/(byte*) RASTER#0 ) - (byte) main::c#0 ← (byte) 25 + (byte) main::c#0 ← (byte/signed byte/word/signed word) 25 to:main::@3 main::@2: scope:[main] from main::@6 to:main::@3 @@ -1662,7 +1662,7 @@ main::@3: scope:[main] from main::@1 main::@2 main::@3 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@2/(byte[1000]) SCREEN#1 ) (byte) main::c#4 ← phi( main::@1/(byte) main::c#0 main::@2/(byte) main::c#1 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#11 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 @@ -1671,12 +1671,12 @@ main::@4: scope:[main] from main::@3 main::@4 (byte[1000]) SCREEN#1 ← phi( main::@3/(byte[1000]) SCREEN#6 ) (byte) main::c#2 ← phi( main::@3/(byte) main::c#4 ) (byte*) RASTER#11 ← phi( main::@3/(byte*) RASTER#1 ) - (boolean~) main::$2 ← *((byte*) RASTER#11) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#11) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#2 - (boolean~) main::$3 ← (byte) main::c#1 != (byte) 0 + (boolean~) main::$3 ← (byte) main::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 @@ -1692,23 +1692,23 @@ main::@return: scope:[main] from main::@11 return to:@return prepare: scope:[prepare] from main - (byte) prepare::i#0 ← (byte) 0 + (byte) prepare::i#0 ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 (byte[256]) buffer1#1 ← phi( prepare/(byte[256]) buffer1#0 ) (byte) prepare::i#2 ← phi( prepare/(byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((byte[256]) buffer1#1 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return to:@return flip: scope:[flip] from main::@7 - (byte) flip::srcIdx#0 ← (byte) 0 - (byte) flip::dstIdx#0 ← (byte) 15 - (byte) flip::r#0 ← (byte) 16 + (byte) flip::srcIdx#0 ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx#0 ← (byte/signed byte/word/signed word) 15 + (byte) flip::r#0 ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 (byte) flip::r#4 ← phi( flip/(byte) flip::r#0 flip::@4/(byte) flip::r#1 ) @@ -1716,7 +1716,7 @@ flip::@1: scope:[flip] from flip flip::@4 (byte[256]) buffer2#3 ← phi( flip/(byte[256]) buffer2#12 flip::@4/(byte[256]) buffer2#1 ) (byte) flip::srcIdx#3 ← phi( flip/(byte) flip::srcIdx#0 flip::@4/(byte) flip::srcIdx#1 ) (byte[256]) buffer1#6 ← phi( flip/(byte[256]) buffer1#10 flip::@4/(byte[256]) buffer1#11 ) - (byte) flip::c#0 ← (byte) 16 + (byte) flip::c#0 ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::r#2 ← phi( flip::@1/(byte) flip::r#4 ) @@ -1728,19 +1728,19 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#11 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 - (byte) flip::i#0 ← (byte) 0 + (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@5/(byte[256]) buffer1#11 ) @@ -1749,25 +1749,25 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte~) plot::$0 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte) 12 - (byte) plot::i#0 ← (byte) 0 - (byte) plot::y#0 ← (byte) 16 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN#1 + (byte/word/signed word~) plot::$0 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 + (byte) plot::i#0 ← (byte/signed byte/word/signed word) 0 + (byte) plot::y#0 ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 ) (byte*) plot::line#4 ← phi( plot/(byte*) plot::line#0 plot::@3/(byte*) plot::line#1 ) (byte) plot::i#3 ← phi( plot/(byte) plot::i#0 plot::@3/(byte) plot::i#1 ) (byte[256]) buffer1#8 ← phi( plot/(byte[256]) buffer1#10 plot::@3/(byte[256]) buffer1#13 ) - (byte) plot::x#0 ← (byte) 0 + (byte) plot::x#0 ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::y#2 ← phi( plot::@1/(byte) plot::y#4 ) @@ -1779,13 +1779,13 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#2 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#2 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 @@ -1813,9 +1813,9 @@ Redundant Phi (byte) plot::y#2 (byte) plot::y#4 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[1000]) SCREEN#0 ← (word) 1024 - (byte[256]) buffer1#0 ← (word) 4096 - (byte[256]) buffer2#0 ← (word) 4352 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) buffer1#0 ← (word/signed word) 4096 + (byte[256]) buffer2#0 ← (word/signed word) 4352 (byte*) RASTER#0 ← (word) 53266 to:@4 main: scope:[main] from @4 @@ -1828,7 +1828,7 @@ main::@1: scope:[main] from main::@11 main::@9 (byte[256]) buffer1#20 ← phi( main::@11/(byte[256]) buffer1#19 main::@9/(byte[256]) buffer1#0 ) (byte[1000]) SCREEN#7 ← phi( main::@11/(byte[1000]) SCREEN#6 main::@9/(byte[1000]) SCREEN#0 ) (byte*) RASTER#3 ← phi( main::@11/(byte*) RASTER#1 main::@9/(byte*) RASTER#0 ) - (byte) main::c#0 ← (byte) 25 + (byte) main::c#0 ← (byte/signed byte/word/signed word) 25 to:main::@3 main::@2: scope:[main] from main::@6 to:main::@3 @@ -1838,16 +1838,16 @@ main::@3: scope:[main] from main::@1 main::@2 main::@3 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@2/(byte[1000]) SCREEN#6 ) (byte) main::c#4 ← phi( main::@1/(byte) main::c#0 main::@2/(byte) main::c#1 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#1 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - (boolean~) main::$2 ← *((byte*) RASTER#1) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#1) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - (boolean~) main::$3 ← (byte) main::c#1 != (byte) 0 + (boolean~) main::$3 ← (byte) main::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 @@ -1863,22 +1863,22 @@ main::@return: scope:[main] from main::@11 return to:@return prepare: scope:[prepare] from main - (byte) prepare::i#0 ← (byte) 0 + (byte) prepare::i#0 ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte) 0 + (boolean~) prepare::$0 ← (byte) prepare::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) prepare::$0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return to:@return flip: scope:[flip] from main::@7 - (byte) flip::srcIdx#0 ← (byte) 0 - (byte) flip::dstIdx#0 ← (byte) 15 - (byte) flip::r#0 ← (byte) 16 + (byte) flip::srcIdx#0 ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx#0 ← (byte/signed byte/word/signed word) 15 + (byte) flip::r#0 ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 (byte) flip::r#4 ← phi( flip/(byte) flip::r#0 flip::@4/(byte) flip::r#1 ) @@ -1886,7 +1886,7 @@ flip::@1: scope:[flip] from flip flip::@4 (byte[256]) buffer2#3 ← phi( flip/(byte[256]) buffer2#10 flip::@4/(byte[256]) buffer2#3 ) (byte) flip::srcIdx#3 ← phi( flip/(byte) flip::srcIdx#0 flip::@4/(byte) flip::srcIdx#1 ) (byte[256]) buffer1#6 ← phi( flip/(byte[256]) buffer1#19 flip::@4/(byte[256]) buffer1#6 ) - (byte) flip::c#0 ← (byte) 16 + (byte) flip::c#0 ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(byte) flip::c#0 flip::@2/(byte) flip::c#1 ) @@ -1895,44 +1895,44 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte) 0 + (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$2) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte) 0 + (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$3) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 - (byte) flip::i#0 ← (byte) 0 + (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte) 0 + (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) flip::$5) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN#6 + (byte~) plot::$0 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte) 12 - (byte) plot::i#0 ← (byte) 0 - (byte) plot::y#0 ← (byte) 16 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN#6 + (byte/word/signed word~) plot::$0 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 + (byte) plot::i#0 ← (byte/signed byte/word/signed word) 0 + (byte) plot::y#0 ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 ) (byte*) plot::line#4 ← phi( plot/(byte*) plot::line#0 plot::@3/(byte*) plot::line#1 ) (byte) plot::i#3 ← phi( plot/(byte) plot::i#0 plot::@3/(byte) plot::i#1 ) (byte[256]) buffer1#8 ← phi( plot/(byte[256]) buffer1#19 plot::@3/(byte[256]) buffer1#8 ) - (byte) plot::x#0 ← (byte) 0 + (byte) plot::x#0 ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(byte) plot::x#0 plot::@2/(byte) plot::x#1 ) @@ -1941,13 +1941,13 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte) 16 + (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 if((boolean~) plot::$4) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte) 0 + (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 if((boolean~) plot::$6) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 @@ -1958,21 +1958,21 @@ plot::@return: scope:[plot] from plot::@3 to:@end @end: scope:[] from @4 -Simple Condition (boolean~) main::$1 if(*((byte*) RASTER#1)!=(byte) 254) goto main::@3 -Simple Condition (boolean~) main::$2 if(*((byte*) RASTER#1)!=(byte) 255) goto main::@4 -Simple Condition (boolean~) main::$3 if((byte) main::c#1!=(byte) 0) goto main::@2 -Simple Condition (boolean~) prepare::$0 if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 -Simple Condition (boolean~) flip::$2 if((byte) flip::c#1!=(byte) 0) goto flip::@2 -Simple Condition (boolean~) flip::$3 if((byte) flip::r#1!=(byte) 0) goto flip::@1 -Simple Condition (boolean~) flip::$5 if((byte) flip::i#1!=(byte) 0) goto flip::@3 -Simple Condition (boolean~) plot::$4 if((byte) plot::x#1<(byte) 16) goto plot::@2 -Simple Condition (boolean~) plot::$6 if((byte) plot::y#1!=(byte) 0) goto plot::@1 +Simple Condition (boolean~) main::$1 if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@3 +Simple Condition (boolean~) main::$2 if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@4 +Simple Condition (boolean~) main::$3 if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@2 +Simple Condition (boolean~) prepare::$0 if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 +Simple Condition (boolean~) flip::$2 if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 +Simple Condition (boolean~) flip::$3 if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 +Simple Condition (boolean~) flip::$5 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 +Simple Condition (boolean~) plot::$4 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 +Simple Condition (boolean~) plot::$6 if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte[1000]) SCREEN#0 ← (word) 1024 - (byte[256]) buffer1#0 ← (word) 4096 - (byte[256]) buffer2#0 ← (word) 4352 + (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) buffer1#0 ← (word/signed word) 4096 + (byte[256]) buffer2#0 ← (word/signed word) 4352 (byte*) RASTER#0 ← (word) 53266 to:@4 main: scope:[main] from @4 @@ -1985,7 +1985,7 @@ main::@1: scope:[main] from main::@11 main::@9 (byte[256]) buffer1#20 ← phi( main::@11/(byte[256]) buffer1#19 main::@9/(byte[256]) buffer1#0 ) (byte[1000]) SCREEN#7 ← phi( main::@11/(byte[1000]) SCREEN#6 main::@9/(byte[1000]) SCREEN#0 ) (byte*) RASTER#3 ← phi( main::@11/(byte*) RASTER#1 main::@9/(byte*) RASTER#0 ) - (byte) main::c#0 ← (byte) 25 + (byte) main::c#0 ← (byte/signed byte/word/signed word) 25 to:main::@3 main::@2: scope:[main] from main::@6 to:main::@3 @@ -1995,14 +1995,14 @@ main::@3: scope:[main] from main::@1 main::@2 main::@3 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@2/(byte[1000]) SCREEN#6 ) (byte) main::c#4 ← phi( main::@1/(byte) main::c#0 main::@2/(byte) main::c#1 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#1 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@4 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@2 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -2017,21 +2017,21 @@ main::@return: scope:[main] from main::@11 return to:@return prepare: scope:[prepare] from main - (byte) prepare::i#0 ← (byte) 0 + (byte) prepare::i#0 ← (byte/signed byte/word/signed word) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return to:@return flip: scope:[flip] from main::@7 - (byte) flip::srcIdx#0 ← (byte) 0 - (byte) flip::dstIdx#0 ← (byte) 15 - (byte) flip::r#0 ← (byte) 16 + (byte) flip::srcIdx#0 ← (byte/signed byte/word/signed word) 0 + (byte) flip::dstIdx#0 ← (byte/signed byte/word/signed word) 15 + (byte) flip::r#0 ← (byte/signed byte/word/signed word) 16 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 (byte) flip::r#4 ← phi( flip/(byte) flip::r#0 flip::@4/(byte) flip::r#1 ) @@ -2039,7 +2039,7 @@ flip::@1: scope:[flip] from flip flip::@4 (byte[256]) buffer2#3 ← phi( flip/(byte[256]) buffer2#10 flip::@4/(byte[256]) buffer2#3 ) (byte) flip::srcIdx#3 ← phi( flip/(byte) flip::srcIdx#0 flip::@4/(byte) flip::srcIdx#1 ) (byte[256]) buffer1#6 ← phi( flip/(byte[256]) buffer1#19 flip::@4/(byte[256]) buffer1#6 ) - (byte) flip::c#0 ← (byte) 16 + (byte) flip::c#0 ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(byte) flip::c#0 flip::@2/(byte) flip::c#1 ) @@ -2048,41 +2048,41 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 - (byte) flip::i#0 ← (byte) 0 + (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 - (byte~) plot::$0 ← (byte) 5 * (byte) 40 - (byte*~) plot::$1 ← (byte[1000]) SCREEN#6 + (byte~) plot::$0 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte) 12 - (byte) plot::i#0 ← (byte) 0 - (byte) plot::y#0 ← (byte) 16 + (byte/word/signed word~) plot::$0 ← (byte/signed byte/word/signed word) 5 * (byte/signed byte/word/signed word) 40 + (byte*~) plot::$1 ← (byte[1000]) SCREEN#6 + (byte/word/signed word~) plot::$0 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 + (byte) plot::i#0 ← (byte/signed byte/word/signed word) 0 + (byte) plot::y#0 ← (byte/signed byte/word/signed word) 16 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(byte) plot::y#0 plot::@3/(byte) plot::y#1 ) (byte*) plot::line#4 ← phi( plot/(byte*) plot::line#0 plot::@3/(byte*) plot::line#1 ) (byte) plot::i#3 ← phi( plot/(byte) plot::i#0 plot::@3/(byte) plot::i#1 ) (byte[256]) buffer1#8 ← phi( plot/(byte[256]) buffer1#19 plot::@3/(byte[256]) buffer1#8 ) - (byte) plot::x#0 ← (byte) 0 + (byte) plot::x#0 ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(byte) plot::x#0 plot::@2/(byte) plot::x#1 ) @@ -2091,12 +2091,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -2117,7 +2117,7 @@ Constant (const byte) flip::dstIdx#0 = 15 Constant (const byte) flip::r#0 = 16 Constant (const byte) flip::c#0 = 16 Constant (const byte) flip::i#0 = 0 -Constant (const byte) plot::$0 = 5*40 +Constant (const byte/word/signed word) plot::$0 = 5*40 Constant (const byte) plot::i#0 = 0 Constant (const byte) plot::y#0 = 16 Constant (const byte) plot::x#0 = 0 @@ -2144,14 +2144,14 @@ main::@3: scope:[main] from main::@1 main::@2 main::@3 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@2/(byte[1000]) SCREEN#6 ) (byte) main::c#4 ← phi( main::@1/(const byte) main::c#0 main::@2/(byte) main::c#1 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#1 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@4 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@2 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -2171,7 +2171,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -2192,14 +2192,14 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 to:flip::@3 @@ -2208,14 +2208,14 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 - (byte*~) plot::$1 ← (byte[1000]) SCREEN#6 + (const byte) plot::$0 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte) 12 + (byte*~) plot::$1 ← (byte[1000]) SCREEN#6 + (const byte/word/signed word) plot::$0 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word) 12 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(const byte) plot::y#0 plot::@3/(byte) plot::y#1 ) @@ -2230,12 +2230,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -2271,14 +2271,14 @@ main::@3: scope:[main] from main::@1 main::@2 main::@3 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@2/(byte[1000]) SCREEN#6 ) (byte) main::c#4 ← phi( main::@1/(const byte) main::c#0 main::@2/(byte) main::c#1 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#1 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@4 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@2 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -2298,7 +2298,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -2319,14 +2319,14 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 to:flip::@3 @@ -2335,14 +2335,14 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 (byte*~) plot::$1 ← (byte[1000]) SCREEN#6 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte) plot::$0+(byte) 12 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte/word/signed word) plot::$0+(byte/signed byte/word/signed word) 12 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(const byte) plot::y#0 plot::@3/(byte) plot::y#1 ) @@ -2357,12 +2357,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -2395,14 +2395,14 @@ main::@3: scope:[main] from main::@1 main::@3 main::@6 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 main::@6/(byte[1000]) SCREEN#6 ) (byte) main::c#4 ← phi( main::@1/(const byte) main::c#0 main::@6/(byte) main::c#1 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@6/(byte*) RASTER#1 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@4 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@3 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -2422,7 +2422,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -2443,28 +2443,28 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 (byte*~) plot::$1 ← (byte[1000]) SCREEN#6 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte) plot::$0+(byte) 12 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte/word/signed word) plot::$0+(byte/signed byte/word/signed word) 12 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(const byte) plot::y#0 plot::@3/(byte) plot::y#1 ) @@ -2479,12 +2479,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -2521,14 +2521,14 @@ main::@3: scope:[main] from main::@1 main::@3 main::@6 (byte[1000]) SCREEN#6 ← phi( main::@1/(byte[1000]) SCREEN#7 ) (byte) main::c#4 ← phi( main::@1/(const byte) main::c#0 main::@6/(byte) main::c#1 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@4 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@3 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -2548,7 +2548,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -2569,28 +2569,28 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 (byte*~) plot::$1 ← (byte[1000]) SCREEN#6 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte) plot::$0+(byte) 12 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte/word/signed word) plot::$0+(byte/signed byte/word/signed word) 12 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(const byte) plot::y#0 plot::@3/(byte) plot::y#1 ) @@ -2605,12 +2605,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -2642,14 +2642,14 @@ main::@1: scope:[main] from main main::@11 to:main::@3 main::@3: scope:[main] from main::@1 main::@3 main::@6 (byte) main::c#4 ← phi( main::@1/(const byte) main::c#0 main::@6/(byte) main::c#1 ) - if(*((byte*) RASTER#3)!=(byte) 254) goto main::@3 + if(*((byte*) RASTER#3)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((byte*) RASTER#3)!=(byte) 255) goto main::@4 + if(*((byte*) RASTER#3)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@3 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -2669,7 +2669,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -2688,28 +2688,28 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#20 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#11 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) (byte~) flip::$4 ← (byte[256]) buffer2#11 *idx (byte) flip::i#2 *((byte[256]) buffer1#20 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 (byte*~) plot::$1 ← (byte[1000]) SCREEN#7 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte) plot::$0+(byte) 12 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte/word/signed word) plot::$0+(byte/signed byte/word/signed word) 12 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(const byte) plot::y#0 plot::@3/(byte) plot::y#1 ) @@ -2723,12 +2723,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -2763,14 +2763,14 @@ main::@1: scope:[main] from main main::@11 to:main::@3 main::@3: scope:[main] from main::@1 main::@3 main::@6 (byte) main::c#4 ← phi( main::@1/(const byte) main::c#0 main::@6/(byte) main::c#1 ) - if(*((byte*) RASTER#3)!=(byte) 254) goto main::@3 + if(*((byte*) RASTER#3)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((byte*) RASTER#3)!=(byte) 255) goto main::@4 + if(*((byte*) RASTER#3)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@3 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -2790,7 +2790,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -2809,28 +2809,28 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (byte[256]) buffer1#20 *idx (byte) flip::srcIdx#2 *((byte[256]) buffer2#11 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) (byte~) flip::$4 ← (byte[256]) buffer2#11 *idx (byte) flip::i#2 *((byte[256]) buffer1#20 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 (byte*~) plot::$1 ← (byte[1000]) SCREEN#7 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte) plot::$0+(byte) 12 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte/word/signed word) plot::$0+(byte/signed byte/word/signed word) 12 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(const byte) plot::y#0 plot::@3/(byte) plot::y#1 ) @@ -2844,12 +2844,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -2874,14 +2874,14 @@ main::@1: scope:[main] from main main::@11 to:main::@3 main::@3: scope:[main] from main::@1 main::@3 main::@6 (byte) main::c#4 ← phi( main::@1/(const byte) main::c#0 main::@6/(byte) main::c#1 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@3 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -2901,7 +2901,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -2920,28 +2920,28 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 (byte*~) plot::$1 ← (const byte[1000]) SCREEN#0 - (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte) plot::$0+(byte) 12 + (byte*) plot::line#0 ← (byte*~) plot::$1 + (const byte/word/signed word) plot::$0+(byte/signed byte/word/signed word) 12 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(const byte) plot::y#0 plot::@3/(byte) plot::y#1 ) @@ -2955,12 +2955,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -2982,14 +2982,14 @@ main::@1: scope:[main] from main main::@11 to:main::@3 main::@3: scope:[main] from main::@1 main::@3 main::@6 (byte) main::c#4 ← phi( main::@1/(const byte) main::c#0 main::@6/(byte) main::c#1 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@3 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -3009,7 +3009,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -3028,27 +3028,27 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return to:@return plot: scope:[plot] from main::@10 - (byte*) plot::line#0 ← (const byte*) plot::$1 + (const byte) plot::$0+(byte) 12 + (byte*) plot::line#0 ← (const byte*) plot::$1 + (const byte/word/signed word) plot::$0+(byte/signed byte/word/signed word) 12 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 (byte) plot::y#4 ← phi( plot/(const byte) plot::y#0 plot::@3/(byte) plot::y#1 ) @@ -3062,12 +3062,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -3089,14 +3089,14 @@ main::@1: scope:[main] from main main::@11 to:main::@3 main::@3: scope:[main] from main::@1 main::@3 main::@6 (byte) main::c#4 ← phi( main::@1/(const byte) main::c#0 main::@6/(byte) main::c#1 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@3 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -3116,7 +3116,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -3135,21 +3135,21 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -3168,12 +3168,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -3198,14 +3198,14 @@ main: scope:[main] from @4 to:main::@3 main::@3: scope:[main] from main main::@11 main::@3 main::@6 (byte) main::c#4 ← phi( main/(const byte) main::c#0 main::@6/(byte) main::c#1 main::@11/(const byte) main::c#0 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@3 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -3225,7 +3225,7 @@ prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(const byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -3244,21 +3244,21 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -3277,12 +3277,12 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -3328,19 +3328,19 @@ Inlining constant with var siblings (const byte) plot::x#0 Inlining constant with var siblings (const byte) plot::x#0 Inlining constant with var siblings (const byte*) plot::line#0 Inlining constant with var siblings (const byte*) plot::line#0 -Constant inlined flip::r#0 = (byte) 16 -Constant inlined flip::dstIdx#0 = (byte) 15 -Constant inlined plot::x#0 = (byte) 0 -Constant inlined prepare::i#0 = (byte) 0 -Constant inlined plot::i#0 = (byte) 0 -Constant inlined flip::i#0 = (byte) 0 -Constant inlined main::c#0 = (byte) 25 -Constant inlined plot::y#0 = (byte) 16 +Constant inlined plot::line#0 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 +Constant inlined plot::$0 = (byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40 Constant inlined plot::$1 = (const byte[1000]) SCREEN#0 -Constant inlined plot::$0 = (byte) 5*(byte) 40 -Constant inlined flip::c#0 = (byte) 16 -Constant inlined plot::line#0 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 -Constant inlined flip::srcIdx#0 = (byte) 0 +Constant inlined plot::x#0 = (byte/signed byte/word/signed word) 0 +Constant inlined plot::y#0 = (byte/signed byte/word/signed word) 16 +Constant inlined flip::dstIdx#0 = (byte/signed byte/word/signed word) 15 +Constant inlined flip::r#0 = (byte/signed byte/word/signed word) 16 +Constant inlined main::c#0 = (byte/signed byte/word/signed word) 25 +Constant inlined flip::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined flip::srcIdx#0 = (byte/signed byte/word/signed word) 0 +Constant inlined prepare::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined plot::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined flip::c#0 = (byte/signed byte/word/signed word) 16 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -3349,15 +3349,15 @@ main: scope:[main] from @4 call prepare param-assignment to:main::@3 main::@3: scope:[main] from main main::@11 main::@3 main::@6 - (byte) main::c#4 ← phi( main/(byte) 25 main::@6/(byte) main::c#1 main::@11/(byte) 25 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 + (byte) main::c#4 ← phi( main/(byte/signed byte/word/signed word) 25 main::@6/(byte) main::c#1 main::@11/(byte/signed byte/word/signed word) 25 ) + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@3 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -3374,10 +3374,10 @@ main::@return: scope:[main] from main::@11 prepare: scope:[prepare] from main to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 - (byte) prepare::i#2 ← phi( prepare/(byte) 0 prepare::@1/(byte) prepare::i#1 ) + (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -3385,32 +3385,32 @@ prepare::@return: scope:[prepare] from prepare::@1 flip: scope:[flip] from main::@7 to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - (byte) flip::r#4 ← phi( flip/(byte) 16 flip::@4/(byte) flip::r#1 ) - (byte) flip::dstIdx#5 ← phi( flip/(byte) 15 flip::@4/(byte) flip::dstIdx#2 ) - (byte) flip::srcIdx#3 ← phi( flip/(byte) 0 flip::@4/(byte) flip::srcIdx#1 ) + (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) + (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) + (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - (byte) flip::c#2 ← phi( flip::@1/(byte) 16 flip::@2/(byte) flip::c#1 ) + (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@2 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@1 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 - (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte) 0 ) + (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@3 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -3418,23 +3418,23 @@ flip::@return: scope:[flip] from flip::@3 plot: scope:[plot] from main::@10 to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 - (byte) plot::y#4 ← phi( plot/(byte) 16 plot::@3/(byte) plot::y#1 ) - (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 plot::@3/(byte*) plot::line#1 ) - (byte) plot::i#3 ← phi( plot/(byte) 0 plot::@3/(byte) plot::i#1 ) + (byte) plot::y#4 ← phi( plot/(byte/signed byte/word/signed word) 16 plot::@3/(byte) plot::y#1 ) + (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 plot::@3/(byte*) plot::line#1 ) + (byte) plot::i#3 ← phi( plot/(byte/signed byte/word/signed word) 0 plot::@3/(byte) plot::i#1 ) to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 - (byte) plot::x#2 ← phi( plot::@1/(byte) 0 plot::@2/(byte) plot::x#1 ) + (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@2 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@1 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -3451,11 +3451,11 @@ FINAL SYMBOL TABLE (byte*) RASTER (const byte*) RASTER#0 = (word) 53266 (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 = (word) 1024 +(const byte[1000]) SCREEN#0 = (word/signed word) 1024 (byte[256]) buffer1 -(const byte[256]) buffer1#0 = (word) 4096 +(const byte[256]) buffer1#0 = (word/signed word) 4096 (byte[256]) buffer2 -(const byte[256]) buffer2#0 = (word) 4352 +(const byte[256]) buffer2#0 = (word/signed word) 4352 (void()) flip() (byte~) flip::$0 (byte~) flip::$4 @@ -3539,15 +3539,15 @@ main: scope:[main] from @4 call prepare param-assignment to:main::@3 main::@3: scope:[main] from main main::@11 main::@12 main::@3 - (byte) main::c#4 ← phi( main/(byte) 25 main::@12/(byte~) main::c#6 main::@11/(byte) 25 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 + (byte) main::c#4 ← phi( main/(byte/signed byte/word/signed word) 25 main::@12/(byte~) main::c#6 main::@11/(byte/signed byte/word/signed word) 25 ) + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 to:main::@6 main::@6: scope:[main] from main::@4 (byte) main::c#1 ← -- (byte) main::c#4 - if((byte) main::c#1!=(byte) 0) goto main::@12 + if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@12 to:main::@7 main::@7: scope:[main] from main::@6 call flip param-assignment @@ -3567,24 +3567,24 @@ main::@12: scope:[main] from main::@6 plot: scope:[plot] from main::@10 to:plot::@1 plot::@1: scope:[plot] from plot plot::@5 - (byte) plot::y#4 ← phi( plot/(byte) 16 plot::@5/(byte~) plot::y#5 ) - (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 plot::@5/(byte*~) plot::line#5 ) - (byte) plot::i#3 ← phi( plot/(byte) 0 plot::@5/(byte~) plot::i#5 ) + (byte) plot::y#4 ← phi( plot/(byte/signed byte/word/signed word) 16 plot::@5/(byte~) plot::y#5 ) + (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 plot::@5/(byte*~) plot::line#5 ) + (byte) plot::i#3 ← phi( plot/(byte/signed byte/word/signed word) 0 plot::@5/(byte~) plot::i#5 ) (byte~) plot::i#6 ← (byte) plot::i#3 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@6 - (byte) plot::x#2 ← phi( plot::@1/(byte) 0 plot::@6/(byte~) plot::x#3 ) + (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@6/(byte~) plot::x#3 ) (byte) plot::i#2 ← phi( plot::@1/(byte~) plot::i#6 plot::@6/(byte~) plot::i#7 ) (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - if((byte) plot::x#1<(byte) 16) goto plot::@6 + if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@6 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 + (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - if((byte) plot::y#1!=(byte) 0) goto plot::@5 + if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@5 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -3601,34 +3601,34 @@ plot::@6: scope:[plot] from plot::@2 flip: scope:[flip] from main::@7 to:flip::@1 flip::@1: scope:[flip] from flip flip::@7 - (byte) flip::r#4 ← phi( flip/(byte) 16 flip::@7/(byte~) flip::r#5 ) - (byte) flip::dstIdx#5 ← phi( flip/(byte) 15 flip::@7/(byte~) flip::dstIdx#6 ) - (byte) flip::srcIdx#3 ← phi( flip/(byte) 0 flip::@7/(byte~) flip::srcIdx#5 ) + (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@7/(byte~) flip::r#5 ) + (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@7/(byte~) flip::dstIdx#6 ) + (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@7/(byte~) flip::srcIdx#5 ) (byte~) flip::srcIdx#6 ← (byte) flip::srcIdx#3 (byte~) flip::dstIdx#7 ← (byte) flip::dstIdx#5 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@8 - (byte) flip::c#2 ← phi( flip::@1/(byte) 16 flip::@8/(byte~) flip::c#3 ) + (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@8/(byte~) flip::c#3 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte~) flip::dstIdx#7 flip::@8/(byte~) flip::dstIdx#8 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte~) flip::srcIdx#6 flip::@8/(byte~) flip::srcIdx#7 ) (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 + (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - if((byte) flip::c#1!=(byte) 0) goto flip::@8 + if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@8 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - if((byte) flip::r#1!=(byte) 0) goto flip::@7 + if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@7 to:flip::@3 flip::@3: scope:[flip] from flip::@4 flip::@9 - (byte) flip::i#2 ← phi( flip::@9/(byte~) flip::i#3 flip::@4/(byte) 0 ) + (byte) flip::i#2 ← phi( flip::@9/(byte~) flip::i#3 flip::@4/(byte/signed byte/word/signed word) 0 ) (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 (byte) flip::i#1 ← ++ (byte) flip::i#2 - if((byte) flip::i#1!=(byte) 0) goto flip::@9 + if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@9 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -3649,10 +3649,10 @@ flip::@8: scope:[flip] from flip::@2 prepare: scope:[prepare] from main to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@3 - (byte) prepare::i#2 ← phi( prepare/(byte) 0 prepare::@3/(byte~) prepare::i#3 ) + (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@3/(byte~) prepare::i#3 ) *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← ++ (byte) prepare::i#2 - if((byte) prepare::i#1!=(byte) 0) goto prepare::@3 + if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@3 to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 return @@ -3693,15 +3693,15 @@ main: scope:[main] from @4 [2] call prepare param-assignment [ ] to:main::@3 main::@3: scope:[main] from main main::@11 main::@12 main::@3 - [3] (byte) main::c#4 ← phi( main/(byte) 25 main::@12/(byte~) main::c#6 main::@11/(byte) 25 ) [ main::c#4 ] - [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] + [3] (byte) main::c#4 ← phi( main/(byte/signed byte/word/signed word) 25 main::@12/(byte~) main::c#6 main::@11/(byte/signed byte/word/signed word) 25 ) [ main::c#4 ] + [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] + [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] to:main::@6 main::@6: scope:[main] from main::@4 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] - [7] if((byte) main::c#1!=(byte) 0) goto main::@12 [ main::c#1 ] + [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@12 [ main::c#1 ] to:main::@7 main::@7: scope:[main] from main::@6 [8] call flip param-assignment [ ] @@ -3722,24 +3722,24 @@ plot: scope:[plot] from main::@10 [13] phi() [ ] to:plot::@1 plot::@1: scope:[plot] from plot plot::@5 - [14] (byte) plot::y#4 ← phi( plot/(byte) 16 plot::@5/(byte~) plot::y#5 ) [ plot::i#3 plot::line#4 plot::y#4 ] - [14] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 plot::@5/(byte*~) plot::line#5 ) [ plot::i#3 plot::line#4 plot::y#4 ] - [14] (byte) plot::i#3 ← phi( plot/(byte) 0 plot::@5/(byte~) plot::i#5 ) [ plot::i#3 plot::line#4 plot::y#4 ] + [14] (byte) plot::y#4 ← phi( plot/(byte/signed byte/word/signed word) 16 plot::@5/(byte~) plot::y#5 ) [ plot::i#3 plot::line#4 plot::y#4 ] + [14] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 plot::@5/(byte*~) plot::line#5 ) [ plot::i#3 plot::line#4 plot::y#4 ] + [14] (byte) plot::i#3 ← phi( plot/(byte/signed byte/word/signed word) 0 plot::@5/(byte~) plot::i#5 ) [ plot::i#3 plot::line#4 plot::y#4 ] [15] (byte~) plot::i#6 ← (byte) plot::i#3 [ plot::line#4 plot::y#4 plot::i#6 ] to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@6 - [16] (byte) plot::x#2 ← phi( plot::@1/(byte) 0 plot::@6/(byte~) plot::x#3 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] + [16] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@6/(byte~) plot::x#3 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] [16] (byte) plot::i#2 ← phi( plot::@1/(byte~) plot::i#6 plot::@6/(byte~) plot::i#7 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] [17] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::x#2 plot::i#1 ] [20] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] - [21] if((byte) plot::x#1<(byte) 16) goto plot::@6 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] + [21] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@6 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] to:plot::@3 plot::@3: scope:[plot] from plot::@2 - [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] + [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] [23] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] - [24] if((byte) plot::y#1!=(byte) 0) goto plot::@5 [ plot::i#1 plot::line#1 plot::y#1 ] + [24] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@5 [ plot::i#1 plot::line#1 plot::y#1 ] to:plot::@return plot::@return: scope:[plot] from plot::@3 [25] return [ ] @@ -3757,34 +3757,34 @@ flip: scope:[flip] from main::@7 [31] phi() [ ] to:flip::@1 flip::@1: scope:[flip] from flip flip::@7 - [32] (byte) flip::r#4 ← phi( flip/(byte) 16 flip::@7/(byte~) flip::r#5 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] - [32] (byte) flip::dstIdx#5 ← phi( flip/(byte) 15 flip::@7/(byte~) flip::dstIdx#6 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] - [32] (byte) flip::srcIdx#3 ← phi( flip/(byte) 0 flip::@7/(byte~) flip::srcIdx#5 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [32] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@7/(byte~) flip::r#5 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [32] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@7/(byte~) flip::dstIdx#6 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [32] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@7/(byte~) flip::srcIdx#5 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] [33] (byte~) flip::srcIdx#6 ← (byte) flip::srcIdx#3 [ flip::dstIdx#5 flip::r#4 flip::srcIdx#6 ] [34] (byte~) flip::dstIdx#7 ← (byte) flip::dstIdx#5 [ flip::r#4 flip::srcIdx#6 flip::dstIdx#7 ] to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@8 - [35] (byte) flip::c#2 ← phi( flip::@1/(byte) 16 flip::@8/(byte~) flip::c#3 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [35] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@8/(byte~) flip::c#3 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] [35] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte~) flip::dstIdx#7 flip::@8/(byte~) flip::dstIdx#8 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] [35] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte~) flip::srcIdx#6 flip::@8/(byte~) flip::srcIdx#7 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] [36] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] [37] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] [38] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::dstIdx#3 flip::c#2 flip::srcIdx#1 ] - [39] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::c#2 flip::srcIdx#1 flip::dstIdx#1 ] + [39] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::c#2 flip::srcIdx#1 flip::dstIdx#1 ] [40] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] - [41] if((byte) flip::c#1!=(byte) 0) goto flip::@8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] + [41] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] to:flip::@4 flip::@4: scope:[flip] from flip::@2 [42] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] [43] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] - [44] if((byte) flip::r#1!=(byte) 0) goto flip::@7 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] + [44] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@7 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] to:flip::@3 flip::@3: scope:[flip] from flip::@4 flip::@9 - [45] (byte) flip::i#2 ← phi( flip::@9/(byte~) flip::i#3 flip::@4/(byte) 0 ) [ flip::i#2 ] + [45] (byte) flip::i#2 ← phi( flip::@9/(byte~) flip::i#3 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] [46] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] [47] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] [48] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] - [49] if((byte) flip::i#1!=(byte) 0) goto flip::@9 [ flip::i#1 ] + [49] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@9 [ flip::i#1 ] to:flip::@return flip::@return: scope:[flip] from flip::@3 [50] return [ ] @@ -3806,10 +3806,10 @@ prepare: scope:[prepare] from main [58] phi() [ ] to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@3 - [59] (byte) prepare::i#2 ← phi( prepare/(byte) 0 prepare::@3/(byte~) prepare::i#3 ) [ prepare::i#2 ] + [59] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@3/(byte~) prepare::i#3 ) [ prepare::i#2 ] [60] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] [61] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] - [62] if((byte) prepare::i#1!=(byte) 0) goto prepare::@3 [ prepare::i#1 ] + [62] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@3 [ prepare::i#1 ] to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 [63] return [ ] @@ -3871,15 +3871,15 @@ main: scope:[main] from @4 [2] call prepare param-assignment [ ] to:main::@3 main::@3: scope:[main] from main main::@11 main::@3 main::@6 - [3] (byte) main::c#4 ← phi( main/(byte) 25 main::@6/(byte) main::c#1 main::@11/(byte) 25 ) [ main::c#4 ] - [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] + [3] (byte) main::c#4 ← phi( main/(byte/signed byte/word/signed word) 25 main::@6/(byte) main::c#1 main::@11/(byte/signed byte/word/signed word) 25 ) [ main::c#4 ] + [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] + [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] to:main::@6 main::@6: scope:[main] from main::@4 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] - [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] + [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] to:main::@7 main::@7: scope:[main] from main::@6 [8] call flip param-assignment [ ] @@ -3897,23 +3897,23 @@ plot: scope:[plot] from main::@10 [12] phi() [ ] to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 - [13] (byte) plot::y#4 ← phi( plot/(byte) 16 plot::@3/(byte) plot::y#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] - [13] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 plot::@3/(byte*) plot::line#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] - [13] (byte) plot::i#3 ← phi( plot/(byte) 0 plot::@3/(byte) plot::i#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] + [13] (byte) plot::y#4 ← phi( plot/(byte/signed byte/word/signed word) 16 plot::@3/(byte) plot::y#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] + [13] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 plot::@3/(byte*) plot::line#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] + [13] (byte) plot::i#3 ← phi( plot/(byte/signed byte/word/signed word) 0 plot::@3/(byte) plot::i#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 - [14] (byte) plot::x#2 ← phi( plot::@1/(byte) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] + [14] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] [14] (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] [15] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] [16] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] [17] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] - [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] + [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] to:plot::@3 plot::@3: scope:[plot] from plot::@2 - [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] + [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] - [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] + [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] to:plot::@return plot::@return: scope:[plot] from plot::@3 [23] return [ ] @@ -3922,32 +3922,32 @@ flip: scope:[flip] from main::@7 [24] phi() [ ] to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - [25] (byte) flip::r#4 ← phi( flip/(byte) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] - [25] (byte) flip::dstIdx#5 ← phi( flip/(byte) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] - [25] (byte) flip::srcIdx#3 ← phi( flip/(byte) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [25] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [25] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [25] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - [26] (byte) flip::c#2 ← phi( flip::@1/(byte) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [26] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] [26] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] [26] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] [27] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] [28] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] - [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] + [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] - [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] + [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] to:flip::@4 flip::@4: scope:[flip] from flip::@2 [33] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] - [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] + [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 - [36] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte) 0 ) [ flip::i#2 ] + [36] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] [37] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] - [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] + [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] to:flip::@return flip::@return: scope:[flip] from flip::@3 [41] return [ ] @@ -3956,10 +3956,10 @@ prepare: scope:[prepare] from main [42] phi() [ ] to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 - [43] (byte) prepare::i#2 ← phi( prepare/(byte) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] + [43] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] [44] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] - [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] + [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 [47] return [ ] @@ -3977,15 +3977,15 @@ main: scope:[main] from @4 [2] call prepare param-assignment [ ] ( main:0 [ ] ) to:main::@3 main::@3: scope:[main] from main main::@11 main::@3 main::@6 - [3] (byte) main::c#4 ← phi( main/(byte) 25 main::@6/(byte) main::c#1 main::@11/(byte) 25 ) [ main::c#4 ] ( main:0 [ main::c#4 ] ) - [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) + [3] (byte) main::c#4 ← phi( main/(byte/signed byte/word/signed word) 25 main::@6/(byte) main::c#1 main::@11/(byte/signed byte/word/signed word) 25 ) [ main::c#4 ] ( main:0 [ main::c#4 ] ) + [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) to:main::@4 main::@4: scope:[main] from main::@3 main::@4 - [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) + [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) to:main::@6 main::@6: scope:[main] from main::@4 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) - [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) + [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) to:main::@7 main::@7: scope:[main] from main::@6 [8] call flip param-assignment [ ] ( main:0 [ ] ) @@ -4003,23 +4003,23 @@ plot: scope:[plot] from main::@10 [12] phi() [ ] ( main:0::plot:9 [ ] ) to:plot::@1 plot::@1: scope:[plot] from plot plot::@3 - [13] (byte) plot::y#4 ← phi( plot/(byte) 16 plot::@3/(byte) plot::y#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) - [13] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 plot::@3/(byte*) plot::line#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) - [13] (byte) plot::i#3 ← phi( plot/(byte) 0 plot::@3/(byte) plot::i#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) + [13] (byte) plot::y#4 ← phi( plot/(byte/signed byte/word/signed word) 16 plot::@3/(byte) plot::y#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) + [13] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 plot::@3/(byte*) plot::line#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) + [13] (byte) plot::i#3 ← phi( plot/(byte/signed byte/word/signed word) 0 plot::@3/(byte) plot::i#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] ) to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 - [14] (byte) plot::x#2 ← phi( plot::@1/(byte) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) + [14] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [14] (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [15] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ) [16] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [17] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) - [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) + [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) to:plot::@3 plot::@3: scope:[plot] from plot::@2 - [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) + [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) - [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) + [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) to:plot::@return plot::@return: scope:[plot] from plot::@3 [23] return [ ] ( main:0::plot:9 [ ] ) @@ -4028,32 +4028,32 @@ flip: scope:[flip] from main::@7 [24] phi() [ ] ( main:0::flip:8 [ ] ) to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - [25] (byte) flip::r#4 ← phi( flip/(byte) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) - [25] (byte) flip::dstIdx#5 ← phi( flip/(byte) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) - [25] (byte) flip::srcIdx#3 ← phi( flip/(byte) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [25] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [25] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [25] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - [26] (byte) flip::c#2 ← phi( flip::@1/(byte) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [26] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [26] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [26] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [27] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ) [28] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) - [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) + [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) - [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) + [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) to:flip::@4 flip::@4: scope:[flip] from flip::@2 [33] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) - [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) + [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 - [36] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte) 0 ) [ flip::i#2 ] ( main:0::flip:8 [ flip::i#2 ] ) + [36] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] ( main:0::flip:8 [ flip::i#2 ] ) [37] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] ( main:0::flip:8 [ flip::i#2 flip::$4 ] ) [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] ( main:0::flip:8 [ flip::i#2 ] ) [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) - [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) + [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) to:flip::@return flip::@return: scope:[flip] from flip::@3 [41] return [ ] ( main:0::flip:8 [ ] ) @@ -4062,10 +4062,10 @@ prepare: scope:[prepare] from main [42] phi() [ ] ( main:0::prepare:2 [ ] ) to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 - [43] (byte) prepare::i#2 ← phi( prepare/(byte) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] ) + [43] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] ) [44] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] ) [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) - [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) + [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 [47] return [ ] ( main:0::prepare:2 [ ] ) @@ -4073,30 +4073,30 @@ prepare::@return: scope:[prepare] from prepare::@1 DOMINATORS @begin dominated by @begin -@4 dominated by @4 @begin -@end dominated by @4 @end @begin -main dominated by @4 @begin main -main::@3 dominated by @4 @begin main::@3 main -main::@4 dominated by @4 @begin main::@4 main::@3 main -main::@6 dominated by @4 @begin main::@4 main::@3 main::@6 main -main::@7 dominated by @4 @begin main::@4 main::@3 main::@6 main main::@7 -main::@10 dominated by @4 @begin main::@4 main::@3 main::@6 main main::@7 main::@10 -main::@11 dominated by @4 @begin main::@4 main::@3 main::@6 main main::@7 main::@10 main::@11 -main::@return dominated by @4 @begin main::@4 main::@3 main::@6 main main::@7 main::@return main::@10 main::@11 -plot dominated by @4 @begin main::@4 main::@3 main::@6 plot main main::@7 main::@10 -plot::@1 dominated by @4 @begin main::@4 main::@3 main::@6 main plot main::@7 plot::@1 main::@10 -plot::@2 dominated by @4 @begin main::@4 main::@3 main::@6 main plot main::@7 plot::@2 plot::@1 main::@10 -plot::@3 dominated by @4 @begin main::@4 main::@3 main::@6 main plot main::@7 plot::@2 plot::@1 main::@10 plot::@3 -plot::@return dominated by @4 @begin main::@4 main::@3 plot::@return main::@6 main plot main::@7 plot::@2 plot::@1 main::@10 plot::@3 -flip dominated by @4 @begin main::@4 main::@3 main::@6 main main::@7 flip -flip::@1 dominated by @4 @begin main::@4 main::@3 main::@6 main main::@7 flip::@1 flip -flip::@2 dominated by @4 @begin main::@4 main::@3 main::@6 main main::@7 flip::@1 flip::@2 flip -flip::@4 dominated by flip::@4 @4 @begin main::@4 main::@3 main::@6 main main::@7 flip::@1 flip::@2 flip -flip::@3 dominated by flip::@4 flip::@3 @4 @begin main::@4 main::@3 main::@6 main main::@7 flip::@1 flip::@2 flip -flip::@return dominated by flip::@4 flip::@3 @4 @begin main::@4 main::@3 main::@6 main main::@7 flip::@return flip::@1 flip::@2 flip -prepare dominated by @4 @begin prepare main -prepare::@1 dominated by @4 @begin prepare main prepare::@1 -prepare::@return dominated by @4 @begin prepare::@return prepare main prepare::@1 +@4 dominated by @begin @4 +@end dominated by @end @begin @4 +main dominated by main @begin @4 +main::@3 dominated by main main::@3 @begin @4 +main::@4 dominated by main main::@3 main::@4 @begin @4 +main::@6 dominated by main main::@6 main::@3 main::@4 @begin @4 +main::@7 dominated by main::@7 main main::@6 main::@3 main::@4 @begin @4 +main::@10 dominated by main::@7 main main::@6 main::@3 main::@4 @begin main::@10 @4 +main::@11 dominated by main::@7 main main::@6 main::@3 main::@4 main::@11 @begin main::@10 @4 +main::@return dominated by main::@return main::@7 main main::@6 main::@3 main::@4 main::@11 @begin main::@10 @4 +plot dominated by main::@7 main plot main::@6 main::@3 main::@4 @begin main::@10 @4 +plot::@1 dominated by main::@7 main plot main::@6 main::@3 plot::@1 main::@4 @begin main::@10 @4 +plot::@2 dominated by main::@7 main plot main::@6 main::@3 plot::@1 main::@4 plot::@2 @begin main::@10 @4 +plot::@3 dominated by main::@7 main plot plot::@3 main::@6 main::@3 plot::@1 main::@4 plot::@2 @begin main::@10 @4 +plot::@return dominated by main::@7 main plot plot::@3 main::@6 main::@3 plot::@1 main::@4 plot::@2 @begin main::@10 @4 plot::@return +flip dominated by main::@7 main main::@6 flip main::@3 main::@4 @begin @4 +flip::@1 dominated by main::@7 main flip::@1 main::@6 flip main::@3 main::@4 @begin @4 +flip::@2 dominated by main::@7 main flip::@2 flip::@1 main::@6 flip main::@3 main::@4 @begin @4 +flip::@4 dominated by main::@7 main flip::@2 flip::@1 main::@6 flip main::@3 main::@4 @begin flip::@4 @4 +flip::@3 dominated by main::@7 main flip::@2 flip::@1 main::@6 flip main::@3 main::@4 @begin flip::@4 flip::@3 @4 +flip::@return dominated by main::@7 main flip::@2 flip::@return flip::@1 main::@6 flip main::@3 main::@4 @begin flip::@4 flip::@3 @4 +prepare dominated by prepare main @begin @4 +prepare::@1 dominated by prepare main prepare::@1 @begin @4 +prepare::@return dominated by prepare main prepare::@1 prepare::@return @begin @4 Found back edge: Loop head: main::@3 tails: main::@3 blocks: null Found back edge: Loop head: main::@4 tails: main::@4 blocks: null @@ -4284,7 +4284,7 @@ main: { //SEG10 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_main: b3_from_b11: - //SEG11 [3] phi (byte) main::c#4 = (byte) 25 [phi:main/main::@11->main::@3#0] -- zpby1=coby1 + //SEG11 [3] phi (byte) main::c#4 = (byte/signed byte/word/signed word) 25 [phi:main/main::@11->main::@3#0] -- zpby1=coby1 lda #$19 sta c jmp b3 @@ -4297,14 +4297,14 @@ main: { jmp b3 //SEG15 main::@3 b3: - //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b3_from_b3 jmp b4 //SEG17 main::@4 b4: - //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b4 @@ -4313,7 +4313,7 @@ main: { b6: //SEG20 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- zpby1=_dec_zpby1 dec c - //SEG21 [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- zpby1_neq_0_then_la1 + //SEG21 [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- zpby1_neq_0_then_la1 lda c bne b3_from_b6 jmp b7 @@ -4350,15 +4350,15 @@ plot: { .label y = 5 //SEG33 [13] phi from plot to plot::@1 [phi:plot->plot::@1] b1_from_plot: - //SEG34 [13] phi (byte) plot::y#4 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 + //SEG34 [13] phi (byte) plot::y#4 = (byte/signed byte/word/signed word) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 + //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [13] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- zpby1=coby1 + //SEG36 [13] phi (byte) plot::i#3 = (byte/signed byte/word/signed word) 0 [phi:plot->plot::@1#2] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -4372,7 +4372,7 @@ plot: { b1: //SEG42 [14] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] b2_from_b1: - //SEG43 [14] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- zpby1=coby1 + //SEG43 [14] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:plot::@1->plot::@2#0] -- zpby1=coby1 lda #0 sta x //SEG44 [14] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy @@ -4396,14 +4396,14 @@ plot: { inc i //SEG52 [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG53 [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- zpby1_lt_coby1_then_la1 + //SEG53 [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- zpby1_lt_coby1_then_la1 lda x cmp #$10 bcc b2_from_b2 jmp b3 //SEG54 plot::@3 b3: - //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda line clc adc #$28 @@ -4413,7 +4413,7 @@ plot: { !: //SEG56 [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1=_dec_zpby1 dec y - //SEG57 [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 + //SEG57 [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 lda y bne b1_from_b3 jmp breturn @@ -4433,13 +4433,13 @@ flip: { .label i = $c //SEG61 [25] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG62 [25] phi (byte) flip::r#4 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 + //SEG62 [25] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- zpby1=coby1 + //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- zpby1=coby1 lda #$f sta dstIdx - //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- zpby1=coby1 + //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- zpby1=coby1 lda #0 sta srcIdx jmp b1 @@ -4453,7 +4453,7 @@ flip: { b1: //SEG70 [26] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] b2_from_b1: - //SEG71 [26] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 + //SEG71 [26] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c //SEG72 [26] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy @@ -4477,14 +4477,14 @@ flip: { sta buffer2,x //SEG81 [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- zpby1=_inc_zpby1 inc srcIdx - //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- zpby1=zpby1_plus_coby1 + //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- zpby1=zpby1_plus_coby1 lda dstIdx clc adc #$10 sta dstIdx //SEG83 [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1=_dec_zpby1 dec c - //SEG84 [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 + //SEG84 [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 lda c bne b2_from_b2 jmp b4 @@ -4494,12 +4494,12 @@ flip: { dec dstIdx //SEG87 [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1=_dec_zpby1 dec r - //SEG88 [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 + //SEG88 [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 lda r bne b1_from_b4 //SEG89 [36] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG90 [36] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- zpby1=coby1 + //SEG90 [36] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- zpby1=coby1 lda #0 sta i jmp b3 @@ -4519,7 +4519,7 @@ flip: { sta buffer1,x //SEG96 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG97 [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- zpby1_neq_0_then_la1 + //SEG97 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- zpby1_neq_0_then_la1 lda i bne b3_from_b3 jmp breturn @@ -4533,7 +4533,7 @@ prepare: { .label i = $d //SEG101 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG102 [43] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- zpby1=coby1 + //SEG102 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -4549,7 +4549,7 @@ prepare: { sta buffer1,x //SEG107 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG108 [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- zpby1_neq_0_then_la1 + //SEG108 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- zpby1_neq_0_then_la1 lda i bne b1_from_b1 jmp breturn @@ -4560,20 +4560,20 @@ prepare: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) always clobbers reg byte a +Statement [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::c#4 main::c#1 ] -Statement [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) always clobbers reg byte a -Statement [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a +Statement [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) always clobbers reg byte a +Statement [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ plot::i#2 plot::i#3 plot::i#1 ] -Statement [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a +Statement [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] -Statement [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) always clobbers reg byte a -Statement [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) always clobbers reg byte a -Statement [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a -Statement [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a +Statement [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) always clobbers reg byte a +Statement [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) always clobbers reg byte a +Statement [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a +Statement [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::c#4 main::c#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_PTR_BYTE:3 [ plot::line#4 plot::line#1 ] : zp ZP_PTR_BYTE:3 , Potential registers zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , @@ -4596,17 +4596,17 @@ Uplift Scope [main] 218.83: zp ZP_BYTE:2 [ main::c#4 main::c#1 ] Uplift Scope [prepare] 38.5: zp ZP_BYTE:13 [ prepare::i#2 prepare::i#1 ] Uplift Scope [] -Uplifting [flip] best 147992 combination reg byte a [ flip::$0 ] zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] reg byte y [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] reg byte x [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] reg byte x [ flip::i#2 flip::i#1 ] reg byte a [ flip::$4 ] zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] -Uplifting [plot] best 123692 combination reg byte y [ plot::x#2 plot::x#1 ] reg byte a [ plot::$3 ] reg byte x [ plot::i#2 plot::i#3 plot::i#1 ] zp ZP_PTR_BYTE:3 [ plot::line#4 plot::line#1 ] zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] -Uplifting [main] best 120292 combination reg byte x [ main::c#4 main::c#1 ] -Uplifting [prepare] best 120192 combination reg byte x [ prepare::i#2 prepare::i#1 ] -Uplifting [] best 120192 combination +Uplifting [flip] best 148192 combination reg byte a [ flip::$0 ] zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] reg byte y [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] reg byte x [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] reg byte x [ flip::i#2 flip::i#1 ] reg byte a [ flip::$4 ] zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] +Uplifting [plot] best 123892 combination reg byte y [ plot::x#2 plot::x#1 ] reg byte a [ plot::$3 ] reg byte x [ plot::i#2 plot::i#3 plot::i#1 ] zp ZP_PTR_BYTE:3 [ plot::line#4 plot::line#1 ] zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] +Uplifting [main] best 120492 combination reg byte x [ main::c#4 main::c#1 ] +Uplifting [prepare] best 120392 combination reg byte x [ prepare::i#2 prepare::i#1 ] +Uplifting [] best 120392 combination Attempting to uplift remaining variables inzp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] -Uplifting [flip] best 120192 combination zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] +Uplifting [flip] best 120392 combination zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] -Uplifting [plot] best 120192 combination zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] +Uplifting [plot] best 120392 combination zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] -Uplifting [flip] best 120192 combination zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] +Uplifting [flip] best 120392 combination zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] Coalescing zero page register [ zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] ] with [ zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] ] Allocated (was zp ZP_PTR_BYTE:3) zp ZP_PTR_BYTE:2 [ plot::line#4 plot::line#1 ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ plot::y#4 plot::y#1 flip::r#4 flip::r#1 ] @@ -4661,7 +4661,7 @@ main: { //SEG10 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_main: b3_from_b11: - //SEG11 [3] phi (byte) main::c#4 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 + //SEG11 [3] phi (byte) main::c#4 = (byte/signed byte/word/signed word) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 //SEG12 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] @@ -4672,13 +4672,13 @@ main: { //SEG14 [3] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG15 main::@3 b3: - //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b3_from_b3 //SEG17 main::@4 b4: - //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b4 @@ -4686,7 +4686,7 @@ main: { b6: //SEG20 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby=_dec_xby dex - //SEG21 [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 + //SEG21 [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3_from_b6 //SEG22 main::@7 @@ -4716,15 +4716,15 @@ plot: { .label y = 4 //SEG33 [13] phi from plot to plot::@1 [phi:plot->plot::@1] b1_from_plot: - //SEG34 [13] phi (byte) plot::y#4 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 + //SEG34 [13] phi (byte) plot::y#4 = (byte/signed byte/word/signed word) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 + //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [13] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 + //SEG36 [13] phi (byte) plot::i#3 = (byte/signed byte/word/signed word) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 jmp b1 //SEG37 [13] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] @@ -4736,7 +4736,7 @@ plot: { b1: //SEG42 [14] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] b2_from_b1: - //SEG43 [14] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 + //SEG43 [14] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 //SEG44 [14] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy jmp b2 @@ -4754,12 +4754,12 @@ plot: { inx //SEG52 [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby=_inc_yby iny - //SEG53 [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 + //SEG53 [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 cpy #$10 bcc b2_from_b2 //SEG54 plot::@3 b3: - //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda line clc adc #$28 @@ -4769,7 +4769,7 @@ plot: { !: //SEG56 [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1=_dec_zpby1 dec y - //SEG57 [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 + //SEG57 [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 lda y bne b1_from_b3 //SEG58 plot::@return @@ -4783,12 +4783,12 @@ flip: { .label r = 4 //SEG61 [25] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG62 [25] phi (byte) flip::r#4 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 + //SEG62 [25] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 + //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 + //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 jmp b1 //SEG65 [25] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] @@ -4800,7 +4800,7 @@ flip: { b1: //SEG70 [26] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] b2_from_b1: - //SEG71 [26] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 + //SEG71 [26] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c //SEG72 [26] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy @@ -4819,14 +4819,14 @@ flip: { sta buffer2,y //SEG81 [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- xby=_inc_xby inx - //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 + //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 tya clc adc #$10 tay //SEG83 [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1=_dec_zpby1 dec c - //SEG84 [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 + //SEG84 [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 lda c bne b2_from_b2 //SEG85 flip::@4 @@ -4835,12 +4835,12 @@ flip: { dey //SEG87 [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1=_dec_zpby1 dec r - //SEG88 [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 + //SEG88 [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 lda r bne b1_from_b4 //SEG89 [36] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG90 [36] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 + //SEG90 [36] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 jmp b3 //SEG91 [36] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] @@ -4854,7 +4854,7 @@ flip: { sta buffer1,x //SEG96 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby=_inc_xby inx - //SEG97 [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 + //SEG97 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3_from_b3 //SEG98 flip::@return @@ -4866,7 +4866,7 @@ flip: { prepare: { //SEG101 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG102 [43] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 + //SEG102 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG103 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] @@ -4879,7 +4879,7 @@ prepare: { sta buffer1,x //SEG107 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby=_inc_xby inx - //SEG108 [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 + //SEG108 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1_from_b1 //SEG109 prepare::@return @@ -4936,7 +4936,7 @@ main: { jsr prepare //SEG10 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG11 [3] phi (byte) main::c#4 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 + //SEG11 [3] phi (byte) main::c#4 = (byte/signed byte/word/signed word) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 //SEG12 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] @@ -4946,13 +4946,13 @@ main: { //SEG14 [3] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG15 main::@3 b3: - //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b3_from_b3 //SEG17 main::@4 b4: - //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b4 @@ -4960,7 +4960,7 @@ main: { b6: //SEG20 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby=_dec_xby dex - //SEG21 [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 + //SEG21 [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG22 main::@7 @@ -4988,15 +4988,15 @@ plot: { .label y = 4 //SEG33 [13] phi from plot to plot::@1 [phi:plot->plot::@1] b1_from_plot: - //SEG34 [13] phi (byte) plot::y#4 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 + //SEG34 [13] phi (byte) plot::y#4 = (byte/signed byte/word/signed word) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 + //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [13] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 + //SEG36 [13] phi (byte) plot::i#3 = (byte/signed byte/word/signed word) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 jmp b1 //SEG37 [13] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] @@ -5006,7 +5006,7 @@ plot: { //SEG41 plot::@1 b1: //SEG42 [14] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] - //SEG43 [14] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 + //SEG43 [14] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 //SEG44 [14] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy jmp b2 @@ -5023,12 +5023,12 @@ plot: { inx //SEG52 [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby=_inc_yby iny - //SEG53 [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 + //SEG53 [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 cpy #$10 bcc b2 //SEG54 plot::@3 b3: - //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda line clc adc #$28 @@ -5038,7 +5038,7 @@ plot: { !: //SEG56 [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1=_dec_zpby1 dec y - //SEG57 [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 + //SEG57 [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 lda y bne b1 //SEG58 plot::@return @@ -5052,12 +5052,12 @@ flip: { .label r = 4 //SEG61 [25] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG62 [25] phi (byte) flip::r#4 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 + //SEG62 [25] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 + //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 + //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 jmp b1 //SEG65 [25] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] @@ -5067,7 +5067,7 @@ flip: { //SEG69 flip::@1 b1: //SEG70 [26] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] - //SEG71 [26] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 + //SEG71 [26] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c //SEG72 [26] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy @@ -5085,14 +5085,14 @@ flip: { sta buffer2,y //SEG81 [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- xby=_inc_xby inx - //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 + //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 tya clc adc #$10 tay //SEG83 [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1=_dec_zpby1 dec c - //SEG84 [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 + //SEG84 [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 lda c bne b2 //SEG85 flip::@4 @@ -5101,12 +5101,12 @@ flip: { dey //SEG87 [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1=_dec_zpby1 dec r - //SEG88 [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 + //SEG88 [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 lda r bne b1 //SEG89 [36] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG90 [36] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 + //SEG90 [36] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 jmp b3 //SEG91 [36] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] @@ -5119,7 +5119,7 @@ flip: { sta buffer1,x //SEG96 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby=_inc_xby inx - //SEG97 [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 + //SEG97 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG98 flip::@return @@ -5131,7 +5131,7 @@ flip: { prepare: { //SEG101 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG102 [43] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 + //SEG102 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG103 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] @@ -5143,7 +5143,7 @@ prepare: { sta buffer1,x //SEG107 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby=_inc_xby inx - //SEG108 [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 + //SEG108 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG109 prepare::@return @@ -5193,7 +5193,7 @@ main: { jsr prepare //SEG10 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG11 [3] phi (byte) main::c#4 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 + //SEG11 [3] phi (byte) main::c#4 = (byte/signed byte/word/signed word) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 //SEG12 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] @@ -5203,20 +5203,20 @@ main: { //SEG14 [3] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG15 main::@3 b3: - //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b3_from_b3 //SEG17 main::@4 b4: - //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b4 //SEG19 main::@6 //SEG20 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby=_dec_xby dex - //SEG21 [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 + //SEG21 [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG22 main::@7 @@ -5239,15 +5239,15 @@ plot: { .label line = 2 .label y = 4 //SEG33 [13] phi from plot to plot::@1 [phi:plot->plot::@1] - //SEG34 [13] phi (byte) plot::y#4 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 + //SEG34 [13] phi (byte) plot::y#4 = (byte/signed byte/word/signed word) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 + //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [13] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 + //SEG36 [13] phi (byte) plot::i#3 = (byte/signed byte/word/signed word) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 jmp b1 //SEG37 [13] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] @@ -5257,7 +5257,7 @@ plot: { //SEG41 plot::@1 b1: //SEG42 [14] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] - //SEG43 [14] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 + //SEG43 [14] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 //SEG44 [14] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy jmp b2 @@ -5274,11 +5274,11 @@ plot: { inx //SEG52 [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby=_inc_yby iny - //SEG53 [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 + //SEG53 [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 cpy #$10 bcc b2 //SEG54 plot::@3 - //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda line clc adc #$28 @@ -5288,7 +5288,7 @@ plot: { !: //SEG56 [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1=_dec_zpby1 dec y - //SEG57 [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 + //SEG57 [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 lda y bne b1 //SEG58 plot::@return @@ -5300,12 +5300,12 @@ flip: { .label c = 5 .label r = 4 //SEG61 [25] phi from flip to flip::@1 [phi:flip->flip::@1] - //SEG62 [25] phi (byte) flip::r#4 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 + //SEG62 [25] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 + //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 + //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 jmp b1 //SEG65 [25] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] @@ -5315,7 +5315,7 @@ flip: { //SEG69 flip::@1 b1: //SEG70 [26] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] - //SEG71 [26] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 + //SEG71 [26] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c //SEG72 [26] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy @@ -5333,14 +5333,14 @@ flip: { sta buffer2,y //SEG81 [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- xby=_inc_xby inx - //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 + //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 tya clc adc #$10 tay //SEG83 [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1=_dec_zpby1 dec c - //SEG84 [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 + //SEG84 [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 lda c bne b2 //SEG85 flip::@4 @@ -5348,11 +5348,11 @@ flip: { dey //SEG87 [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1=_dec_zpby1 dec r - //SEG88 [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 + //SEG88 [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 lda r bne b1 //SEG89 [36] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] - //SEG90 [36] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 + //SEG90 [36] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 jmp b3 //SEG91 [36] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] @@ -5365,7 +5365,7 @@ flip: { sta buffer1,x //SEG96 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby=_inc_xby inx - //SEG97 [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 + //SEG97 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG98 flip::@return @@ -5375,7 +5375,7 @@ flip: { //SEG100 prepare prepare: { //SEG101 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] - //SEG102 [43] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 + //SEG102 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG103 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] @@ -5387,7 +5387,7 @@ prepare: { sta buffer1,x //SEG107 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby=_inc_xby inx - //SEG108 [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 + //SEG108 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG109 prepare::@return @@ -5426,7 +5426,7 @@ main: { jsr prepare //SEG10 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG11 [3] phi (byte) main::c#4 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 + //SEG11 [3] phi (byte) main::c#4 = (byte/signed byte/word/signed word) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 //SEG12 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] @@ -5435,20 +5435,20 @@ main: { //SEG14 [3] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG15 main::@3 b3: - //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b3_from_b3 //SEG17 main::@4 b4: - //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b4 //SEG19 main::@6 //SEG20 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby=_dec_xby dex - //SEG21 [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 + //SEG21 [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG22 main::@7 @@ -5471,15 +5471,15 @@ plot: { .label line = 2 .label y = 4 //SEG33 [13] phi from plot to plot::@1 [phi:plot->plot::@1] - //SEG34 [13] phi (byte) plot::y#4 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 + //SEG34 [13] phi (byte) plot::y#4 = (byte/signed byte/word/signed word) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 + //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [13] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 + //SEG36 [13] phi (byte) plot::i#3 = (byte/signed byte/word/signed word) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 //SEG37 [13] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] //SEG38 [13] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy @@ -5488,7 +5488,7 @@ plot: { //SEG41 plot::@1 b1: //SEG42 [14] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] - //SEG43 [14] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 + //SEG43 [14] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 //SEG44 [14] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy //SEG45 [14] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] @@ -5504,11 +5504,11 @@ plot: { inx //SEG52 [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby=_inc_yby iny - //SEG53 [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 + //SEG53 [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 cpy #$10 bcc b2 //SEG54 plot::@3 - //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda line clc adc #$28 @@ -5518,7 +5518,7 @@ plot: { !: //SEG56 [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1=_dec_zpby1 dec y - //SEG57 [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 + //SEG57 [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 lda y bne b1 //SEG58 plot::@return @@ -5530,12 +5530,12 @@ flip: { .label c = 5 .label r = 4 //SEG61 [25] phi from flip to flip::@1 [phi:flip->flip::@1] - //SEG62 [25] phi (byte) flip::r#4 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 + //SEG62 [25] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 + //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 + //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 //SEG65 [25] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] //SEG66 [25] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy @@ -5544,7 +5544,7 @@ flip: { //SEG69 flip::@1 b1: //SEG70 [26] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] - //SEG71 [26] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 + //SEG71 [26] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c //SEG72 [26] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy @@ -5561,14 +5561,14 @@ flip: { sta buffer2,y //SEG81 [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- xby=_inc_xby inx - //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 + //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 tya clc adc #$10 tay //SEG83 [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1=_dec_zpby1 dec c - //SEG84 [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 + //SEG84 [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 lda c bne b2 //SEG85 flip::@4 @@ -5576,11 +5576,11 @@ flip: { dey //SEG87 [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1=_dec_zpby1 dec r - //SEG88 [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 + //SEG88 [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 lda r bne b1 //SEG89 [36] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] - //SEG90 [36] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 + //SEG90 [36] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 //SEG91 [36] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] //SEG92 [36] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy @@ -5592,7 +5592,7 @@ flip: { sta buffer1,x //SEG96 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby=_inc_xby inx - //SEG97 [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 + //SEG97 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG98 flip::@return @@ -5602,7 +5602,7 @@ flip: { //SEG100 prepare prepare: { //SEG101 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] - //SEG102 [43] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 + //SEG102 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 //SEG103 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] //SEG104 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy @@ -5613,7 +5613,7 @@ prepare: { sta buffer1,x //SEG107 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby=_inc_xby inx - //SEG108 [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 + //SEG108 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG109 prepare::@return @@ -5647,7 +5647,7 @@ main: { jsr prepare //SEG10 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG11 [3] phi (byte) main::c#4 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 + //SEG11 [3] phi (byte) main::c#4 = (byte/signed byte/word/signed word) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 //SEG12 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] @@ -5655,20 +5655,20 @@ main: { //SEG14 [3] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG15 main::@3 b3: - //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b3 //SEG17 main::@4 b4: - //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b4 //SEG19 main::@6 //SEG20 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby=_dec_xby dex - //SEG21 [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 + //SEG21 [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG22 main::@7 @@ -5691,15 +5691,15 @@ plot: { .label line = 2 .label y = 4 //SEG33 [13] phi from plot to plot::@1 [phi:plot->plot::@1] - //SEG34 [13] phi (byte) plot::y#4 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 + //SEG34 [13] phi (byte) plot::y#4 = (byte/signed byte/word/signed word) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 + //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [13] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 + //SEG36 [13] phi (byte) plot::i#3 = (byte/signed byte/word/signed word) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 //SEG37 [13] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] //SEG38 [13] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy @@ -5708,7 +5708,7 @@ plot: { //SEG41 plot::@1 b1: //SEG42 [14] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] - //SEG43 [14] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 + //SEG43 [14] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 //SEG44 [14] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy //SEG45 [14] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] @@ -5724,11 +5724,11 @@ plot: { inx //SEG52 [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby=_inc_yby iny - //SEG53 [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 + //SEG53 [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 cpy #$10 bcc b2 //SEG54 plot::@3 - //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda line clc adc #$28 @@ -5738,7 +5738,7 @@ plot: { !: //SEG56 [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1=_dec_zpby1 dec y - //SEG57 [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 + //SEG57 [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 lda y bne b1 //SEG58 plot::@return @@ -5750,12 +5750,12 @@ flip: { .label c = 5 .label r = 4 //SEG61 [25] phi from flip to flip::@1 [phi:flip->flip::@1] - //SEG62 [25] phi (byte) flip::r#4 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 + //SEG62 [25] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 + //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 + //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 //SEG65 [25] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] //SEG66 [25] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy @@ -5764,7 +5764,7 @@ flip: { //SEG69 flip::@1 b1: //SEG70 [26] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] - //SEG71 [26] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 + //SEG71 [26] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c //SEG72 [26] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy @@ -5781,14 +5781,14 @@ flip: { sta buffer2,y //SEG81 [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- xby=_inc_xby inx - //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 + //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 tya clc adc #$10 tay //SEG83 [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1=_dec_zpby1 dec c - //SEG84 [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 + //SEG84 [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 lda c bne b2 //SEG85 flip::@4 @@ -5796,11 +5796,11 @@ flip: { dey //SEG87 [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1=_dec_zpby1 dec r - //SEG88 [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 + //SEG88 [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 lda r bne b1 //SEG89 [36] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] - //SEG90 [36] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 + //SEG90 [36] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 //SEG91 [36] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] //SEG92 [36] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy @@ -5812,7 +5812,7 @@ flip: { sta buffer1,x //SEG96 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby=_inc_xby inx - //SEG97 [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 + //SEG97 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG98 flip::@return @@ -5822,7 +5822,7 @@ flip: { //SEG100 prepare prepare: { //SEG101 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] - //SEG102 [43] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 + //SEG102 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 //SEG103 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] //SEG104 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy @@ -5833,7 +5833,7 @@ prepare: { sta buffer1,x //SEG107 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby=_inc_xby inx - //SEG108 [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 + //SEG108 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG109 prepare::@return @@ -5866,27 +5866,27 @@ main: { jsr prepare //SEG10 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG11 [3] phi (byte) main::c#4 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 + //SEG11 [3] phi (byte) main::c#4 = (byte/signed byte/word/signed word) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 //SEG12 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] //SEG13 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] //SEG14 [3] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG15 main::@3 b3: - //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b3 //SEG17 main::@4 b4: - //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b4 //SEG19 main::@6 //SEG20 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby=_dec_xby dex - //SEG21 [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 + //SEG21 [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG22 main::@7 @@ -5909,15 +5909,15 @@ plot: { .label line = 2 .label y = 4 //SEG33 [13] phi from plot to plot::@1 [phi:plot->plot::@1] - //SEG34 [13] phi (byte) plot::y#4 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 + //SEG34 [13] phi (byte) plot::y#4 = (byte/signed byte/word/signed word) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 + //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [13] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 + //SEG36 [13] phi (byte) plot::i#3 = (byte/signed byte/word/signed word) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 //SEG37 [13] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] //SEG38 [13] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy @@ -5926,7 +5926,7 @@ plot: { //SEG41 plot::@1 b1: //SEG42 [14] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] - //SEG43 [14] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 + //SEG43 [14] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 //SEG44 [14] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy //SEG45 [14] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] @@ -5942,11 +5942,11 @@ plot: { inx //SEG52 [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby=_inc_yby iny - //SEG53 [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 + //SEG53 [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 cpy #$10 bcc b2 //SEG54 plot::@3 - //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda line clc adc #$28 @@ -5956,7 +5956,7 @@ plot: { !: //SEG56 [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1=_dec_zpby1 dec y - //SEG57 [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 + //SEG57 [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 lda y bne b1 //SEG58 plot::@return @@ -5968,12 +5968,12 @@ flip: { .label c = 5 .label r = 4 //SEG61 [25] phi from flip to flip::@1 [phi:flip->flip::@1] - //SEG62 [25] phi (byte) flip::r#4 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 + //SEG62 [25] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 + //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 + //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 //SEG65 [25] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] //SEG66 [25] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy @@ -5982,7 +5982,7 @@ flip: { //SEG69 flip::@1 b1: //SEG70 [26] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] - //SEG71 [26] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 + //SEG71 [26] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c //SEG72 [26] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy @@ -5999,14 +5999,14 @@ flip: { sta buffer2,y //SEG81 [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- xby=_inc_xby inx - //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 + //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 tya clc adc #$10 tay //SEG83 [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1=_dec_zpby1 dec c - //SEG84 [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 + //SEG84 [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 lda c bne b2 //SEG85 flip::@4 @@ -6014,11 +6014,11 @@ flip: { dey //SEG87 [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1=_dec_zpby1 dec r - //SEG88 [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 + //SEG88 [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 lda r bne b1 //SEG89 [36] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] - //SEG90 [36] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 + //SEG90 [36] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 //SEG91 [36] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] //SEG92 [36] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy @@ -6030,7 +6030,7 @@ flip: { sta buffer1,x //SEG96 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby=_inc_xby inx - //SEG97 [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 + //SEG97 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG98 flip::@return @@ -6040,7 +6040,7 @@ flip: { //SEG100 prepare prepare: { //SEG101 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] - //SEG102 [43] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 + //SEG102 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 //SEG103 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] //SEG104 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy @@ -6051,7 +6051,7 @@ prepare: { sta buffer1,x //SEG107 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby=_inc_xby inx - //SEG108 [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 + //SEG108 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG109 prepare::@return @@ -6066,11 +6066,11 @@ FINAL SYMBOL TABLE (byte*) RASTER (const byte*) RASTER#0 RASTER = (word) 53266 (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 SCREEN = (word) 1024 +(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[256]) buffer1 -(const byte[256]) buffer1#0 buffer1 = (word) 4096 +(const byte[256]) buffer1#0 buffer1 = (word/signed word) 4096 (byte[256]) buffer2 -(const byte[256]) buffer2#0 buffer2 = (word) 4352 +(const byte[256]) buffer2#0 buffer2 = (word/signed word) 4352 (void()) flip() (byte~) flip::$0 reg byte a 2002.0 (byte~) flip::$4 reg byte a 202.0 @@ -6171,27 +6171,27 @@ main: { jsr prepare //SEG10 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG11 [3] phi (byte) main::c#4 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 + //SEG11 [3] phi (byte) main::c#4 = (byte/signed byte/word/signed word) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 //SEG12 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] //SEG13 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] //SEG14 [3] phi (byte) main::c#4 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG15 main::@3 b3: - //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG16 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b3 //SEG17 main::@4 b4: - //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b4 //SEG19 main::@6 //SEG20 [6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby=_dec_xby dex - //SEG21 [7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 + //SEG21 [7] if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG22 main::@7 @@ -6214,15 +6214,15 @@ plot: { .label line = 2 .label y = 4 //SEG33 [13] phi from plot to plot::@1 [phi:plot->plot::@1] - //SEG34 [13] phi (byte) plot::y#4 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 + //SEG34 [13] phi (byte) plot::y#4 = (byte/signed byte/word/signed word) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 + //SEG35 [13] phi (byte*) plot::line#4 = (const byte[1000]) SCREEN#0+(byte/signed byte/word/signed word) 5*(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [13] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 + //SEG36 [13] phi (byte) plot::i#3 = (byte/signed byte/word/signed word) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 //SEG37 [13] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] //SEG38 [13] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy @@ -6231,7 +6231,7 @@ plot: { //SEG41 plot::@1 b1: //SEG42 [14] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] - //SEG43 [14] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 + //SEG43 [14] phi (byte) plot::x#2 = (byte/signed byte/word/signed word) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 //SEG44 [14] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy //SEG45 [14] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] @@ -6247,11 +6247,11 @@ plot: { inx //SEG52 [18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby=_inc_yby iny - //SEG53 [19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 + //SEG53 [19] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- yby_lt_coby1_then_la1 cpy #$10 bcc b2 //SEG54 plot::@3 - //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG55 [20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda line clc adc #$28 @@ -6261,7 +6261,7 @@ plot: { !: //SEG56 [21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1=_dec_zpby1 dec y - //SEG57 [22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 + //SEG57 [22] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- zpby1_neq_0_then_la1 lda y bne b1 //SEG58 plot::@return @@ -6273,12 +6273,12 @@ flip: { .label c = 5 .label r = 4 //SEG61 [25] phi from flip to flip::@1 [phi:flip->flip::@1] - //SEG62 [25] phi (byte) flip::r#4 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 + //SEG62 [25] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 + //SEG63 [25] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 + //SEG64 [25] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 //SEG65 [25] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] //SEG66 [25] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy @@ -6287,7 +6287,7 @@ flip: { //SEG69 flip::@1 b1: //SEG70 [26] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] - //SEG71 [26] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 + //SEG71 [26] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c //SEG72 [26] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy @@ -6304,14 +6304,14 @@ flip: { sta buffer2,y //SEG81 [29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- xby=_inc_xby inx - //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 + //SEG82 [30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- yby=yby_plus_coby1 tya clc adc #$10 tay //SEG83 [31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1=_dec_zpby1 dec c - //SEG84 [32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 + //SEG84 [32] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- zpby1_neq_0_then_la1 lda c bne b2 //SEG85 flip::@4 @@ -6319,11 +6319,11 @@ flip: { dey //SEG87 [34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1=_dec_zpby1 dec r - //SEG88 [35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 + //SEG88 [35] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- zpby1_neq_0_then_la1 lda r bne b1 //SEG89 [36] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] - //SEG90 [36] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 + //SEG90 [36] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 //SEG91 [36] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] //SEG92 [36] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy @@ -6335,7 +6335,7 @@ flip: { sta buffer1,x //SEG96 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby=_inc_xby inx - //SEG97 [40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 + //SEG97 [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b3 //SEG98 flip::@return @@ -6345,7 +6345,7 @@ flip: { //SEG100 prepare prepare: { //SEG101 [43] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] - //SEG102 [43] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 + //SEG102 [43] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 //SEG103 [43] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] //SEG104 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy @@ -6356,7 +6356,7 @@ prepare: { sta buffer1,x //SEG107 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby=_inc_xby inx - //SEG108 [46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 + //SEG108 [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG109 prepare::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym index 7a0585e81..9b2e0ae96 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym @@ -4,11 +4,11 @@ (byte*) RASTER (const byte*) RASTER#0 RASTER = (word) 53266 (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 SCREEN = (word) 1024 +(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[256]) buffer1 -(const byte[256]) buffer1#0 buffer1 = (word) 4096 +(const byte[256]) buffer1#0 buffer1 = (word/signed word) 4096 (byte[256]) buffer2 -(const byte[256]) buffer2#0 buffer2 = (word) 4352 +(const byte[256]) buffer2#0 buffer2 = (word/signed word) 4352 (void()) flip() (byte~) flip::$0 reg byte a 2002.0 (byte~) flip::$4 reg byte a 202.0 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.cfg b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.cfg index 3b0a4ccfc..767e7b7b5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.cfg @@ -8,10 +8,10 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [5] if((byte) main::i#1!=(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [6] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log index 72a0fb63e..3f7390ebd 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log @@ -12,13 +12,13 @@ void main() { Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 100 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 main::@return: return @@ -35,15 +35,15 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 100 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 @@ -59,15 +59,15 @@ main::@return: scope:[main] from main::@2 Removing empty block main::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 100 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -82,15 +82,15 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 100 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -108,18 +108,18 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 100 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -135,18 +135,18 @@ main::@return: scope:[main] from main::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 100 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -183,18 +183,18 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 100 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -210,17 +210,17 @@ Alias (byte*) SCREEN#0 = (byte*) SCREEN#2 (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 main::@1/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 100 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -235,17 +235,17 @@ Self Phi Eliminated (byte*) SCREEN#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 100 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -260,16 +260,16 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 100 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 100 if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -280,20 +280,20 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$0 if((byte) main::i#1!=(byte) 100) goto main::@1 +Simple Condition (boolean~) main::$0 if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 100) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -315,7 +315,7 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 100) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -329,7 +329,7 @@ Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -337,10 +337,10 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 100) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -355,7 +355,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@return @@ -376,10 +376,10 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::i#2 ← phi( main/(byte) 0 main::@3/(byte~) main::i#3 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 100) goto main::@3 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@3 to:main::@return main::@return: scope:[main] from main::@1 return @@ -405,10 +405,10 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@3 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] [3] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [5] if((byte) main::i#1!=(byte) 100) goto main::@3 [ main::i#1 ] + [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@3 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [6] return [ ] @@ -436,10 +436,10 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] [3] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [5] if((byte) main::i#1!=(byte) 100) goto main::@1 [ main::i#1 ] + [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [6] return [ ] @@ -456,10 +456,10 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [5] if((byte) main::i#1!=(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [6] return [ ] ( main:0 [ ] ) @@ -468,10 +468,10 @@ main::@return: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@return dominated by @1 main::@return @begin main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main Found back edge: Loop head: main::@1 tails: main::@1 blocks: null Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 @@ -521,7 +521,7 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -537,7 +537,7 @@ main: { sta SCREEN,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG15 [5] if((byte) main::i#1!=(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$64 bne b1_from_b1 @@ -583,7 +583,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -596,7 +596,7 @@ main: { sta SCREEN,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$64 bne b1_from_b1 //SEG16 main::@return @@ -629,7 +629,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -641,7 +641,7 @@ main: { sta SCREEN,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$64 bne b1 //SEG16 main::@return @@ -671,7 +671,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -683,7 +683,7 @@ main: { sta SCREEN,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$64 bne b1 //SEG16 main::@return @@ -709,7 +709,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -720,7 +720,7 @@ main: { sta SCREEN,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$64 bne b1 //SEG16 main::@return @@ -733,7 +733,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@return @@ -759,7 +759,7 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -770,7 +770,7 @@ main: { sta SCREEN,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$64 bne b1 //SEG16 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.sym b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.sym index dad4e247b..8b08466fe 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.cfg b/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.cfg index 379fdbfad..87e69f251 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.cfg @@ -8,16 +8,16 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - [6] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@1/(byte) 100 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) + [6] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 100 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) [7] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] ( main:0 [ main::j#2 ] ) [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) - [9] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log b/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log index b2837c409..e73b9cbee 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log @@ -15,20 +15,20 @@ void main() { } PROGRAM - (byte*) SCREEN1 ← (word) 1024 - (byte*) SCREEN2 ← (word) 1280 + (byte*) SCREEN1 ← (word/signed word) 1024 + (byte*) SCREEN2 ← (word/signed word) 1280 proc (void()) main() - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: *((byte*) SCREEN1 + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 0 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 - (byte) main::j ← (byte) 100 + (byte) main::j ← (byte/signed byte/word/signed word) 100 main::@2: *((byte*) SCREEN2 + (byte) main::j) ← (byte) main::j (byte) main::j ← -- (byte) main::j - (boolean~) main::$1 ← (byte) main::j != (byte) 255 + (boolean~) main::$1 ← (byte) main::j != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 main::@return: return @@ -49,25 +49,25 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1 ← (word) 1024 - (byte*) SCREEN2 ← (word) 1280 + (byte*) SCREEN1 ← (word/signed word) 1024 + (byte*) SCREEN2 ← (word/signed word) 1280 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 *((byte*) SCREEN1 + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 0 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::j ← (byte) 100 + (byte) main::j ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 *((byte*) SCREEN2 + (byte) main::j) ← (byte) main::j (byte) main::j ← -- (byte) main::j - (boolean~) main::$1 ← (byte) main::j != (byte) 255 + (boolean~) main::$1 ← (byte) main::j != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 @@ -83,25 +83,25 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1 ← (word) 1024 - (byte*) SCREEN2 ← (word) 1280 + (byte*) SCREEN1 ← (word/signed word) 1024 + (byte*) SCREEN2 ← (word/signed word) 1280 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 *((byte*) SCREEN1 + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 0 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::j ← (byte) 100 + (byte) main::j ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 *((byte*) SCREEN2 + (byte) main::j) ← (byte) main::j (byte) main::j ← -- (byte) main::j - (boolean~) main::$1 ← (byte) main::j != (byte) 255 + (boolean~) main::$1 ← (byte) main::j != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -116,25 +116,25 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN1 ← (word) 1024 - (byte*) SCREEN2 ← (word) 1280 + (byte*) SCREEN1 ← (word/signed word) 1024 + (byte*) SCREEN2 ← (word/signed word) 1280 to:@1 main: scope:[main] from @1 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 *((byte*) SCREEN1 + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$0 ← (byte) main::i != (byte) 0 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::j ← (byte) 100 + (byte) main::j ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 *((byte*) SCREEN2 + (byte) main::j) ← (byte) main::j (byte) main::j ← -- (byte) main::j - (boolean~) main::$1 ← (byte) main::j != (byte) 255 + (boolean~) main::$1 ← (byte) main::j != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -154,13 +154,13 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN1#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1280 + (byte*) SCREEN1#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 ) (byte*) SCREEN1#2 ← phi( @1/(byte*) SCREEN1#3 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN2#3 ← phi( main/(byte*) SCREEN2#4 main::@1/(byte*) SCREEN2#3 ) @@ -168,19 +168,19 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN1#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 (byte*) SCREEN2#2 ← phi( main::@1/(byte*) SCREEN2#3 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte*) SCREEN2#1 ← phi( main::@2/(byte*) SCREEN2#1 main::@3/(byte*) SCREEN2#2 ) (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) *((byte*) SCREEN2#1 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 != (byte) 255 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -197,13 +197,13 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN1#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1280 + (byte*) SCREEN1#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 ) (byte*) SCREEN1#2 ← phi( @1/(byte*) SCREEN1#3 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN2#3 ← phi( main/(byte*) SCREEN2#4 main::@1/(byte*) SCREEN2#3 ) @@ -211,19 +211,19 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN1#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 (byte*) SCREEN2#2 ← phi( main::@1/(byte*) SCREEN2#3 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte*) SCREEN2#1 ← phi( main::@2/(byte*) SCREEN2#1 main::@3/(byte*) SCREEN2#2 ) (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) *((byte*) SCREEN2#1 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 != (byte) 255 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -275,13 +275,13 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1280 + (byte*) SCREEN1#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 ) (byte*) SCREEN1#2 ← phi( @1/(byte*) SCREEN1#3 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN2#3 ← phi( main/(byte*) SCREEN2#4 main::@1/(byte*) SCREEN2#3 ) @@ -289,19 +289,19 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN1#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 (byte*) SCREEN2#2 ← phi( main::@1/(byte*) SCREEN2#3 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte*) SCREEN2#1 ← phi( main::@2/(byte*) SCREEN2#1 main::@3/(byte*) SCREEN2#2 ) (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) *((byte*) SCREEN2#1 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 != (byte) 255 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -321,11 +321,11 @@ Alias (byte*) SCREEN2#2 = (byte*) SCREEN2#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1280 + (byte*) SCREEN1#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1280 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN2#2 ← phi( main/(byte*) SCREEN2#0 main::@1/(byte*) SCREEN2#2 ) @@ -333,18 +333,18 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN1#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte*) SCREEN2#1 ← phi( main::@2/(byte*) SCREEN2#1 main::@3/(byte*) SCREEN2#2 ) (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) *((byte*) SCREEN2#1 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 != (byte) 255 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -362,11 +362,11 @@ Self Phi Eliminated (byte*) SCREEN2#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1280 + (byte*) SCREEN1#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1280 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte*) SCREEN2#2 ← phi( main/(byte*) SCREEN2#0 ) @@ -374,18 +374,18 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN1#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte*) SCREEN2#1 ← phi( main::@3/(byte*) SCREEN2#2 ) (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) *((byte*) SCREEN2#1 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 != (byte) 255 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -402,27 +402,27 @@ Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#2 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1280 + (byte*) SCREEN1#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1280 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) *((byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 != (byte) 255 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/word/signed word) 255 if((boolean~) main::$1) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -433,31 +433,31 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$0 if((byte) main::i#1!=(byte) 0) goto main::@1 -Simple Condition (boolean~) main::$1 if((byte) main::j#1!=(byte) 255) goto main::@2 +Simple Condition (boolean~) main::$0 if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 +Simple Condition (boolean~) main::$1 if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1280 + (byte*) SCREEN1#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1280 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) *((byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) *((byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1!=(byte) 255) goto main::@2 + if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 return @@ -481,7 +481,7 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 to:main::@2 @@ -489,7 +489,7 @@ main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(const byte) main::j#0 ) *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1!=(byte) 255) goto main::@2 + if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 return @@ -512,13 +512,13 @@ main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@1/(const byte) main::j#0 ) *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1!=(byte) 255) goto main::@2 + if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 return @@ -536,8 +536,8 @@ Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0 -Constant inlined main::j#0 = (byte) 100 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::j#0 = (byte/signed byte/word/signed word) 100 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -545,16 +545,16 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@1/(byte) 100 ) + (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 100 ) *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1!=(byte) 255) goto main::@2 + if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 return @@ -569,9 +569,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN1 -(const byte*) SCREEN1#0 = (word) 1024 +(const byte*) SCREEN1#0 = (word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 = (word) 1280 +(const byte*) SCREEN2#0 = (word/signed word) 1280 (void()) main() (label) main::@1 (label) main::@2 @@ -597,16 +597,16 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#3 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#3 ) *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@5 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@5 to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - (byte) main::j#2 ← phi( main::@6/(byte~) main::j#3 main::@1/(byte) 100 ) + (byte) main::j#2 ← phi( main::@6/(byte~) main::j#3 main::@1/(byte/signed byte/word/signed word) 100 ) *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1!=(byte) 255) goto main::@6 + if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@6 to:main::@return main::@return: scope:[main] from main::@2 return @@ -635,16 +635,16 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#3 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#3 ) [ main::i#2 ] [3] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [5] if((byte) main::i#1!=(byte) 0) goto main::@5 [ main::i#1 ] + [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@5 [ main::i#1 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [6] (byte) main::j#2 ← phi( main::@6/(byte~) main::j#3 main::@1/(byte) 100 ) [ main::j#2 ] + [6] (byte) main::j#2 ← phi( main::@6/(byte~) main::j#3 main::@1/(byte/signed byte/word/signed word) 100 ) [ main::j#2 ] [7] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] - [9] if((byte) main::j#1!=(byte) 255) goto main::@6 [ main::j#1 ] + [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@6 [ main::j#1 ] to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] @@ -677,16 +677,16 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] [3] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] + [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - [6] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@1/(byte) 100 ) [ main::j#2 ] + [6] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 100 ) [ main::j#2 ] [7] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] - [9] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ] + [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] @@ -703,16 +703,16 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - [6] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@1/(byte) 100 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) + [6] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 100 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) [7] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] ( main:0 [ main::j#2 ] ) [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) - [9] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] ( main:0 [ ] ) @@ -721,11 +721,11 @@ main::@return: scope:[main] from main::@2 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main Found back edge: Loop head: main::@1 tails: main::@1 blocks: null Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -789,7 +789,7 @@ main: { .label j = 3 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -805,12 +805,12 @@ main: { sta SCREEN1,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG15 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_0_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_0_then_la1 lda i bne b1_from_b1 //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG17 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 @@ -826,7 +826,7 @@ main: { sta SCREEN2,x //SEG22 [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG23 [9] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 lda j cmp #$ff bne b2_from_b2 @@ -875,7 +875,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -888,12 +888,12 @@ main: { sta SCREEN1,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1_from_b1 //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG17 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 jmp b2 //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -906,7 +906,7 @@ main: { sta SCREEN2,x //SEG22 [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_dec_xby dex - //SEG23 [9] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b2_from_b2 //SEG24 main::@return @@ -942,7 +942,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -954,12 +954,12 @@ main: { sta SCREEN1,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG17 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 jmp b2 //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -971,7 +971,7 @@ main: { sta SCREEN2,x //SEG22 [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_dec_xby dex - //SEG23 [9] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b2 //SEG24 main::@return @@ -1003,7 +1003,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -1015,11 +1015,11 @@ main: { sta SCREEN1,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 jmp b2 //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -1031,7 +1031,7 @@ main: { sta SCREEN2,x //SEG22 [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_dec_xby dex - //SEG23 [9] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b2 //SEG24 main::@return @@ -1059,7 +1059,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -1070,11 +1070,11 @@ main: { sta SCREEN1,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG19 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy @@ -1085,7 +1085,7 @@ main: { sta SCREEN2,x //SEG22 [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_dec_xby dex - //SEG23 [9] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b2 //SEG24 main::@return @@ -1098,9 +1098,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN1 -(const byte*) SCREEN1#0 SCREEN1 = (word) 1024 +(const byte*) SCREEN1#0 SCREEN1 = (word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 SCREEN2 = (word) 1280 +(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1280 (void()) main() (label) main::@1 (label) main::@2 @@ -1132,7 +1132,7 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -1143,11 +1143,11 @@ main: { sta SCREEN1,x //SEG14 [4] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG15 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG15 [5] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b1 //SEG16 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG17 [6] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 //SEG18 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG19 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy @@ -1158,7 +1158,7 @@ main: { sta SCREEN2,x //SEG22 [8] (byte) main::j#1 ← -- (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_dec_xby dex - //SEG23 [9] if((byte) main::j#1!=(byte) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::j#1!=(byte/word/signed word) 255) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b2 //SEG24 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.sym b/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.sym index d196d5486..339578f77 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.sym @@ -2,9 +2,9 @@ (label) @begin (label) @end (byte*) SCREEN1 -(const byte*) SCREEN1#0 SCREEN1 = (word) 1024 +(const byte*) SCREEN1#0 SCREEN1 = (word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 SCREEN2 = (word) 1280 +(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1280 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.cfg b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.cfg index 36ba5aab1..f68ac8b07 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.cfg @@ -6,84 +6,84 @@ @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) + [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@5 [3] (byte*) main::charset4#10 ← phi( main/(const byte*) CHARSET4#0 main::@5/(byte*) main::charset4#1 ) [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) [3] (byte*) main::chargen#10 ← phi( main/(const byte*) CHARGEN#0 main::@5/(byte*) main::chargen#1 ) [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) - [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) - [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) - [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) - [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) + [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) + [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) + [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) + [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) - [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) - [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) + [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) + [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) - [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) + [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) to:main::@7 main::@7: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@7 - [13] (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ) - [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) - [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) - [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) - [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) + [13] (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ) + [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) + [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) + [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) + [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) - [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) + [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) - [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) + [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) to:main::@8 main::@8: scope:[main] from main::@2 - [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) + [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) to:main::@3 main::@3: scope:[main] from main::@2 main::@8 [23] (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] ) - [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) - [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) - [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) - [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) - [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) + [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) + [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) + [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) + [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) + [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) [30] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) - [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) + [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) to:main::@9 main::@9: scope:[main] from main::@3 - [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) + [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) to:main::@4 main::@4: scope:[main] from main::@3 main::@9 [33] (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] ) - [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) - [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) - [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) - [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) + [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) + [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) + [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) + [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) [39] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) - [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) + [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) to:main::@10 main::@10: scope:[main] from main::@4 - [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) + [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) to:main::@5 main::@5: scope:[main] from main::@10 main::@4 [42] (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] ) - [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) + [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) [45] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ] ( main:0 [ main::chargen#10 main::charset4#1 ] ) - [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) - [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) + [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) + [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) to:main::@11 main::@11: scope:[main] from main::@5 - [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) + [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) asm { cli } to:main::@6 main::@6: scope:[main] from main::@11 main::@6 - [50] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [50] (byte) main::i#2 ← phi( main::@11/(byte/signed byte/word/signed word) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [51] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@12 main::@12: scope:[main] from main::@6 - [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) + [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main::@12 [55] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log index da5ce5f50..382f4aa7b 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log @@ -43,98 +43,98 @@ void main() { Adding pre/post-modifier (byte*) main::charset4 ← ++ (byte*) main::charset4 PROGRAM - (byte*) SCREEN ← (word) 1024 - (byte*) CHARSET ← (word) 8192 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) CHARSET ← (word/signed word) 8192 (byte*) CHARGEN ← (word) 53248 - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) D018 ← (word) 53272 - (byte*) CHARSET4 ← (word) 10240 - (byte[]) bits_count ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4 ← (word/signed word) 10240 + (byte[]) bits_count ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } proc (void()) main() asm { sei } - *((byte*) PROCPORT) ← (byte) 50 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen ← (byte*) CHARGEN (byte*) main::charset4 ← (byte*) CHARSET4 main::@1: - (byte) main::bits_gen ← (byte) 0 - (byte*~) main::$0 ← (byte*) main::chargen + (byte) 1 + (byte) main::bits_gen ← (byte/signed byte/word/signed word) 0 + (byte*~) main::$0 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 1 (byte*) main::chargen1 ← (byte*~) main::$0 - (byte~) main::$1 ← *((byte*) main::chargen) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte~) main::$1 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte~) main::$7 ← (byte[]) bits_count *idx (byte~) main::$6 (byte) main::bits ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$8 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$9 ← ! (boolean~) main::$8 if((boolean~) main::$9) goto main::@2 - (byte~) main::$10 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$10 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$10 main::@2: - (byte~) main::$11 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$11 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte~) main::$12 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte~) main::$17 ← (byte[]) bits_count *idx (byte~) main::$16 (byte) main::bits ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$18 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$19 ← ! (boolean~) main::$18 if((boolean~) main::$19) goto main::@3 - (byte~) main::$20 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$20 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$20 main::@3: - (byte~) main::$21 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$21 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte~) main::$22 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte~) main::$27 ← (byte[]) bits_count *idx (byte~) main::$26 (byte) main::bits ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$28 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$29 ← ! (boolean~) main::$28 if((boolean~) main::$29) goto main::@4 - (byte~) main::$30 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$30 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$30 main::@4: - (byte~) main::$31 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$31 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1) & (byte) 1 + (byte~) main::$32 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte~) main::$36 ← (byte[]) bits_count *idx (byte~) main::$35 (byte) main::bits ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$37 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$38 ← ! (boolean~) main::$37 if((boolean~) main::$38) goto main::@5 - (byte~) main::$39 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$39 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$39 main::@5: - (byte~) main::$40 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$40 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$40 *((byte*) main::charset4) ← (byte) main::bits_gen (byte*) main::charset4 ← ++ (byte*) main::charset4 - (byte*~) main::$41 ← (byte*) main::chargen + (byte) 2 + (byte*~) main::$41 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 (byte*) main::chargen ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN + (word) 2048 + (byte*~) main::$42 ← (byte*) CHARGEN + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@6: *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$44 ← (byte) main::i != (byte) 0 + (boolean~) main::$44 ← (byte) main::i != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 - *((byte*) D018) ← (byte) 25 + *((byte*) D018) ← (byte/signed byte/word/signed word) 25 main::@return: return endproc // main() @@ -210,117 +210,117 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (byte*) CHARSET ← (word) 8192 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) CHARSET ← (word/signed word) 8192 (byte*) CHARGEN ← (word) 53248 - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) D018 ← (word) 53272 - (byte*) CHARSET4 ← (word) 10240 - (byte[]) bits_count ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4 ← (word/signed word) 10240 + (byte[]) bits_count ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from asm { sei } - *((byte*) PROCPORT) ← (byte) 50 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen ← (byte*) CHARGEN (byte*) main::charset4 ← (byte*) CHARSET4 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::bits_gen ← (byte) 0 - (byte*~) main::$0 ← (byte*) main::chargen + (byte) 1 + (byte) main::bits_gen ← (byte/signed byte/word/signed word) 0 + (byte*~) main::$0 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 1 (byte*) main::chargen1 ← (byte*~) main::$0 - (byte~) main::$1 ← *((byte*) main::chargen) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte~) main::$1 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte~) main::$7 ← (byte[]) bits_count *idx (byte~) main::$6 (byte) main::bits ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$8 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$9 ← ! (boolean~) main::$8 if((boolean~) main::$9) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 - (byte~) main::$11 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$11 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte~) main::$12 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte~) main::$17 ← (byte[]) bits_count *idx (byte~) main::$16 (byte) main::bits ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$18 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$19 ← ! (boolean~) main::$18 if((boolean~) main::$19) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte~) main::$10 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$10 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$10 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 - (byte~) main::$21 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$21 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte~) main::$22 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte~) main::$27 ← (byte[]) bits_count *idx (byte~) main::$26 (byte) main::bits ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$28 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$29 ← ! (boolean~) main::$28 if((boolean~) main::$29) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte~) main::$20 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$20 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$20 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 - (byte~) main::$31 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$31 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1) & (byte) 1 + (byte~) main::$32 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte~) main::$36 ← (byte[]) bits_count *idx (byte~) main::$35 (byte) main::bits ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$37 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$38 ← ! (boolean~) main::$37 if((boolean~) main::$38) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte~) main::$30 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$30 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$30 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 - (byte~) main::$40 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$40 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$40 *((byte*) main::charset4) ← (byte) main::bits_gen (byte*) main::charset4 ← ++ (byte*) main::charset4 - (byte*~) main::$41 ← (byte*) main::chargen + (byte) 2 + (byte*~) main::$41 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 (byte*) main::chargen ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN + (word) 2048 + (byte*~) main::$42 ← (byte*) CHARGEN + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte~) main::$39 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$39 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$39 to:main::@5 main::@11: scope:[main] from main::@5 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$44 ← (byte) main::i != (byte) 0 + (boolean~) main::$44 ← (byte) main::i != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((byte*) D018) ← (byte) 25 + *((byte*) D018) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -334,117 +334,117 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (byte*) CHARSET ← (word) 8192 + (byte*) SCREEN ← (word/signed word) 1024 + (byte*) CHARSET ← (word/signed word) 8192 (byte*) CHARGEN ← (word) 53248 - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) D018 ← (word) 53272 - (byte*) CHARSET4 ← (word) 10240 - (byte[]) bits_count ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4 ← (word/signed word) 10240 + (byte[]) bits_count ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 asm { sei } - *((byte*) PROCPORT) ← (byte) 50 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen ← (byte*) CHARGEN (byte*) main::charset4 ← (byte*) CHARSET4 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::bits_gen ← (byte) 0 - (byte*~) main::$0 ← (byte*) main::chargen + (byte) 1 + (byte) main::bits_gen ← (byte/signed byte/word/signed word) 0 + (byte*~) main::$0 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 1 (byte*) main::chargen1 ← (byte*~) main::$0 - (byte~) main::$1 ← *((byte*) main::chargen) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte~) main::$1 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte~) main::$7 ← (byte[]) bits_count *idx (byte~) main::$6 (byte) main::bits ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$8 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$9 ← ! (boolean~) main::$8 if((boolean~) main::$9) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 - (byte~) main::$11 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$11 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte~) main::$12 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte~) main::$17 ← (byte[]) bits_count *idx (byte~) main::$16 (byte) main::bits ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$18 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$19 ← ! (boolean~) main::$18 if((boolean~) main::$19) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte~) main::$10 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$10 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$10 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 - (byte~) main::$21 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$21 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte~) main::$22 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte~) main::$27 ← (byte[]) bits_count *idx (byte~) main::$26 (byte) main::bits ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$28 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$29 ← ! (boolean~) main::$28 if((boolean~) main::$29) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte~) main::$20 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$20 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$20 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 - (byte~) main::$31 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$31 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1) & (byte) 1 + (byte~) main::$32 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte~) main::$36 ← (byte[]) bits_count *idx (byte~) main::$35 (byte) main::bits ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits >= (byte) 2 + (boolean~) main::$37 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 (boolean~) main::$38 ← ! (boolean~) main::$37 if((boolean~) main::$38) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte~) main::$30 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$30 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$30 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 - (byte~) main::$40 ← (byte) main::bits_gen << (byte) 1 + (byte~) main::$40 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$40 *((byte*) main::charset4) ← (byte) main::bits_gen (byte*) main::charset4 ← ++ (byte*) main::charset4 - (byte*~) main::$41 ← (byte*) main::chargen + (byte) 2 + (byte*~) main::$41 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 (byte*) main::chargen ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN + (word) 2048 + (byte*~) main::$42 ← (byte*) CHARGEN + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte~) main::$39 ← (byte) main::bits_gen + (byte) 1 + (byte~) main::$39 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen ← (byte~) main::$39 to:main::@5 main::@11: scope:[main] from main::@5 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$44 ← (byte) main::i != (byte) 0 + (boolean~) main::$44 ← (byte) main::i != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((byte*) D018) ← (byte) 25 + *((byte*) D018) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -468,13 +468,13 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) CHARSET#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word) 10240 - (byte[]) bits_count#0 ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 (byte*) D018#13 ← phi( @1/(byte*) D018#14 ) @@ -484,7 +484,7 @@ main: scope:[main] from @1 (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 ) asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (byte*) CHARGEN#1 (byte*) main::charset4#0 ← (byte*) CHARSET4#1 to:main::@1 @@ -496,18 +496,18 @@ main::@1: scope:[main] from main main::@5 (byte*) main::charset4#9 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#6 ) (byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte) main::bits_gen#0 ← (byte) 0 - (byte*~) main::$0 ← (byte*) main::chargen#2 + (byte) 1 + (byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0 + (byte*~) main::$0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1 (byte*) main::chargen1#0 ← (byte*~) main::$0 - (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte~) main::$7 ← (byte[]) bits_count#1 *idx (byte~) main::$6 (byte) main::bits#0 ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits#0 >= (byte) 2 + (boolean~) main::$8 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$9 ← ! (boolean~) main::$8 if((boolean~) main::$9) goto main::@2 to:main::@7 @@ -521,16 +521,16 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 ) (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte) 1 + (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#1 ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte~) main::$17 ← (byte[]) bits_count#2 *idx (byte~) main::$16 (byte) main::bits#1 ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits#1 >= (byte) 2 + (boolean~) main::$18 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$19 ← ! (boolean~) main::$18 if((boolean~) main::$19) goto main::@3 to:main::@8 @@ -544,7 +544,7 @@ main::@7: scope:[main] from main::@1 (byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 ) (byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 ) (byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 ) - (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte) 1 + (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#2 ← (byte~) main::$10 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 @@ -557,16 +557,16 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 ) (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte) 1 + (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#3 ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte~) main::$27 ← (byte[]) bits_count#3 *idx (byte~) main::$26 (byte) main::bits#2 ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits#2 >= (byte) 2 + (boolean~) main::$28 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$29 ← ! (boolean~) main::$28 if((boolean~) main::$29) goto main::@4 to:main::@9 @@ -580,7 +580,7 @@ main::@8: scope:[main] from main::@2 (byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 ) (byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 ) (byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 ) - (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte) 1 + (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#4 ← (byte~) main::$20 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 @@ -593,15 +593,15 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 ) (byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 ) - (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte) 1 + (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#5 ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte) 1 + (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte~) main::$36 ← (byte[]) bits_count#4 *idx (byte~) main::$35 (byte) main::bits#3 ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits#3 >= (byte) 2 + (boolean~) main::$37 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$38 ← ! (boolean~) main::$37 if((boolean~) main::$38) goto main::@5 to:main::@10 @@ -615,7 +615,7 @@ main::@9: scope:[main] from main::@3 (byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 ) (byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 ) (byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 ) - (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte) 1 + (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#6 ← (byte~) main::$30 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 @@ -627,13 +627,13 @@ main::@5: scope:[main] from main::@10 main::@4 (byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte) 1 + (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#7 ← (byte~) main::$40 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 - (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte) 2 + (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 (byte*) main::chargen#1 ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word) 2048 + (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 @@ -646,16 +646,16 @@ main::@10: scope:[main] from main::@4 (byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#16 ← phi( main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte) 1 + (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#8 ← (byte~) main::$39 to:main::@5 main::@11: scope:[main] from main::@5 (byte*) D018#3 ← phi( main::@5/(byte*) D018#4 ) (byte*) SCREEN#2 ← phi( main::@5/(byte*) SCREEN#3 ) (byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte*) D018#2 ← phi( main::@11/(byte*) D018#3 main::@6/(byte*) D018#2 ) @@ -663,12 +663,12 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 (byte*) D018#1 ← phi( main::@6/(byte*) D018#2 ) - *((byte*) D018#1) ← (byte) 25 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -688,13 +688,13 @@ main::@return: scope:[main] from main::@12 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) CHARSET#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word) 10240 - (byte[]) bits_count#0 ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 (byte*) D018#13 ← phi( @1/(byte*) D018#14 ) @@ -704,7 +704,7 @@ main: scope:[main] from @1 (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 ) asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (byte*) CHARGEN#1 (byte*) main::charset4#0 ← (byte*) CHARSET4#1 to:main::@1 @@ -716,18 +716,18 @@ main::@1: scope:[main] from main main::@5 (byte*) main::charset4#9 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#6 ) (byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte) main::bits_gen#0 ← (byte) 0 - (byte*~) main::$0 ← (byte*) main::chargen#2 + (byte) 1 + (byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0 + (byte*~) main::$0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1 (byte*) main::chargen1#0 ← (byte*~) main::$0 - (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte~) main::$7 ← (byte[]) bits_count#1 *idx (byte~) main::$6 (byte) main::bits#0 ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits#0 >= (byte) 2 + (boolean~) main::$8 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$9 ← ! (boolean~) main::$8 if((boolean~) main::$9) goto main::@2 to:main::@7 @@ -741,16 +741,16 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 ) (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte) 1 + (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#1 ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte~) main::$17 ← (byte[]) bits_count#2 *idx (byte~) main::$16 (byte) main::bits#1 ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits#1 >= (byte) 2 + (boolean~) main::$18 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$19 ← ! (boolean~) main::$18 if((boolean~) main::$19) goto main::@3 to:main::@8 @@ -764,7 +764,7 @@ main::@7: scope:[main] from main::@1 (byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 ) (byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 ) (byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 ) - (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte) 1 + (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#2 ← (byte~) main::$10 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 @@ -777,16 +777,16 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 ) (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte) 1 + (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#3 ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte~) main::$27 ← (byte[]) bits_count#3 *idx (byte~) main::$26 (byte) main::bits#2 ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits#2 >= (byte) 2 + (boolean~) main::$28 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$29 ← ! (boolean~) main::$28 if((boolean~) main::$29) goto main::@4 to:main::@9 @@ -800,7 +800,7 @@ main::@8: scope:[main] from main::@2 (byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 ) (byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 ) (byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 ) - (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte) 1 + (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#4 ← (byte~) main::$20 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 @@ -813,15 +813,15 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 ) (byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 ) - (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte) 1 + (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#5 ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte) 1 + (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte~) main::$36 ← (byte[]) bits_count#4 *idx (byte~) main::$35 (byte) main::bits#3 ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits#3 >= (byte) 2 + (boolean~) main::$37 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$38 ← ! (boolean~) main::$37 if((boolean~) main::$38) goto main::@5 to:main::@10 @@ -835,7 +835,7 @@ main::@9: scope:[main] from main::@3 (byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 ) (byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 ) (byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 ) - (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte) 1 + (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#6 ← (byte~) main::$30 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 @@ -847,13 +847,13 @@ main::@5: scope:[main] from main::@10 main::@4 (byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte) 1 + (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#7 ← (byte~) main::$40 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 - (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte) 2 + (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 (byte*) main::chargen#1 ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word) 2048 + (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 @@ -866,16 +866,16 @@ main::@10: scope:[main] from main::@4 (byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#16 ← phi( main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte) 1 + (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#8 ← (byte~) main::$39 to:main::@5 main::@11: scope:[main] from main::@5 (byte*) D018#3 ← phi( main::@5/(byte*) D018#4 ) (byte*) SCREEN#2 ← phi( main::@5/(byte*) SCREEN#3 ) (byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte*) D018#2 ← phi( main::@11/(byte*) D018#3 main::@6/(byte*) D018#2 ) @@ -883,12 +883,12 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 (byte*) D018#1 ← phi( main::@6/(byte*) D018#2 ) - *((byte*) D018#1) ← (byte) 25 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -1111,13 +1111,13 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) CHARSET#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word) 10240 - (byte[]) bits_count#0 ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 (byte*) D018#13 ← phi( @1/(byte*) D018#14 ) @@ -1127,7 +1127,7 @@ main: scope:[main] from @1 (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 ) asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (byte*) CHARGEN#1 (byte*) main::charset4#0 ← (byte*) CHARSET4#1 to:main::@1 @@ -1139,18 +1139,18 @@ main::@1: scope:[main] from main main::@5 (byte*) main::charset4#9 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#6 ) (byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte) main::bits_gen#0 ← (byte) 0 - (byte*~) main::$0 ← (byte*) main::chargen#2 + (byte) 1 + (byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0 + (byte*~) main::$0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1 (byte*) main::chargen1#0 ← (byte*~) main::$0 - (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte~) main::$7 ← (byte[]) bits_count#1 *idx (byte~) main::$6 (byte) main::bits#0 ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits#0 >= (byte) 2 + (boolean~) main::$8 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$9 ← ! (boolean~) main::$8 if((boolean~) main::$9) goto main::@2 to:main::@7 @@ -1164,16 +1164,16 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 ) (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte) 1 + (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#1 ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte~) main::$17 ← (byte[]) bits_count#2 *idx (byte~) main::$16 (byte) main::bits#1 ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits#1 >= (byte) 2 + (boolean~) main::$18 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$19 ← ! (boolean~) main::$18 if((boolean~) main::$19) goto main::@3 to:main::@8 @@ -1187,7 +1187,7 @@ main::@7: scope:[main] from main::@1 (byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 ) (byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 ) (byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 ) - (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte) 1 + (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#2 ← (byte~) main::$10 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 @@ -1200,16 +1200,16 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 ) (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte) 1 + (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#3 ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte~) main::$27 ← (byte[]) bits_count#3 *idx (byte~) main::$26 (byte) main::bits#2 ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits#2 >= (byte) 2 + (boolean~) main::$28 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$29 ← ! (boolean~) main::$28 if((boolean~) main::$29) goto main::@4 to:main::@9 @@ -1223,7 +1223,7 @@ main::@8: scope:[main] from main::@2 (byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 ) (byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 ) (byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 ) - (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte) 1 + (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#4 ← (byte~) main::$20 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 @@ -1236,15 +1236,15 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 ) (byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 ) - (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte) 1 + (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#5 ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte) 1 + (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte~) main::$36 ← (byte[]) bits_count#4 *idx (byte~) main::$35 (byte) main::bits#3 ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits#3 >= (byte) 2 + (boolean~) main::$37 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 (boolean~) main::$38 ← ! (boolean~) main::$37 if((boolean~) main::$38) goto main::@5 to:main::@10 @@ -1258,7 +1258,7 @@ main::@9: scope:[main] from main::@3 (byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 ) (byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 ) (byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 ) - (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte) 1 + (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#6 ← (byte~) main::$30 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 @@ -1270,13 +1270,13 @@ main::@5: scope:[main] from main::@10 main::@4 (byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte) 1 + (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#7 ← (byte~) main::$40 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 - (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte) 2 + (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 (byte*) main::chargen#1 ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word) 2048 + (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 @@ -1289,16 +1289,16 @@ main::@10: scope:[main] from main::@4 (byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#16 ← phi( main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte) 1 + (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#8 ← (byte~) main::$39 to:main::@5 main::@11: scope:[main] from main::@5 (byte*) D018#3 ← phi( main::@5/(byte*) D018#4 ) (byte*) SCREEN#2 ← phi( main::@5/(byte*) SCREEN#3 ) (byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte*) D018#2 ← phi( main::@11/(byte*) D018#3 main::@6/(byte*) D018#2 ) @@ -1306,12 +1306,12 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 (byte*) D018#1 ← phi( main::@6/(byte*) D018#2 ) - *((byte*) D018#1) ← (byte) 25 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -1327,20 +1327,20 @@ main::@return: scope:[main] from main::@12 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$9 ← (byte) main::bits#0 < (byte) 2 from (boolean~) main::$8 ← (byte) main::bits#0 >= (byte) 2 -Inversing boolean not (boolean~) main::$19 ← (byte) main::bits#1 < (byte) 2 from (boolean~) main::$18 ← (byte) main::bits#1 >= (byte) 2 -Inversing boolean not (boolean~) main::$29 ← (byte) main::bits#2 < (byte) 2 from (boolean~) main::$28 ← (byte) main::bits#2 >= (byte) 2 -Inversing boolean not (boolean~) main::$38 ← (byte) main::bits#3 < (byte) 2 from (boolean~) main::$37 ← (byte) main::bits#3 >= (byte) 2 +Inversing boolean not (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$8 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 +Inversing boolean not (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$18 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 +Inversing boolean not (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$28 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 +Inversing boolean not (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$37 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) CHARSET#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word) 10240 - (byte[]) bits_count#0 ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 (byte*) D018#13 ← phi( @1/(byte*) D018#14 ) @@ -1350,7 +1350,7 @@ main: scope:[main] from @1 (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 ) asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (byte*) CHARGEN#1 (byte*) main::charset4#0 ← (byte*) CHARSET4#1 to:main::@1 @@ -1362,18 +1362,18 @@ main::@1: scope:[main] from main main::@5 (byte*) main::charset4#9 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#5 main::@5/(byte[]) bits_count#6 ) (byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte) main::bits_gen#0 ← (byte) 0 - (byte*~) main::$0 ← (byte*) main::chargen#2 + (byte) 1 + (byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0 + (byte*~) main::$0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1 (byte*) main::chargen1#0 ← (byte*~) main::$0 - (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte~) main::$7 ← (byte[]) bits_count#1 *idx (byte~) main::$6 (byte) main::bits#0 ← (byte~) main::$7 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte) 2 + (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$9) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 @@ -1386,16 +1386,16 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 ) (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte) 1 + (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#1 ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte~) main::$17 ← (byte[]) bits_count#2 *idx (byte~) main::$16 (byte) main::bits#1 ← (byte~) main::$17 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte) 2 + (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$19) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 @@ -1408,7 +1408,7 @@ main::@7: scope:[main] from main::@1 (byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 ) (byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 ) (byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 ) - (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte) 1 + (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#2 ← (byte~) main::$10 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 @@ -1421,16 +1421,16 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 ) (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte) 1 + (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#3 ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte~) main::$27 ← (byte[]) bits_count#3 *idx (byte~) main::$26 (byte) main::bits#2 ← (byte~) main::$27 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte) 2 + (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$29) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 @@ -1443,7 +1443,7 @@ main::@8: scope:[main] from main::@2 (byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 ) (byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 ) (byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 ) - (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte) 1 + (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#4 ← (byte~) main::$20 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 @@ -1456,15 +1456,15 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 ) (byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 ) - (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte) 1 + (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#5 ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte) 1 + (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte~) main::$36 ← (byte[]) bits_count#4 *idx (byte~) main::$35 (byte) main::bits#3 ← (byte~) main::$36 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte) 2 + (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$38) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 @@ -1477,7 +1477,7 @@ main::@9: scope:[main] from main::@3 (byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 ) (byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 ) (byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 ) - (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte) 1 + (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#6 ← (byte~) main::$30 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 @@ -1489,13 +1489,13 @@ main::@5: scope:[main] from main::@10 main::@4 (byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte) 1 + (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#7 ← (byte~) main::$40 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 - (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte) 2 + (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 (byte*) main::chargen#1 ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word) 2048 + (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 @@ -1508,16 +1508,16 @@ main::@10: scope:[main] from main::@4 (byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#16 ← phi( main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte) 1 + (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 (byte) main::bits_gen#8 ← (byte~) main::$39 to:main::@5 main::@11: scope:[main] from main::@5 (byte*) D018#3 ← phi( main::@5/(byte*) D018#4 ) (byte*) SCREEN#2 ← phi( main::@5/(byte*) SCREEN#3 ) (byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte*) D018#2 ← phi( main::@11/(byte*) D018#3 main::@6/(byte*) D018#2 ) @@ -1525,12 +1525,12 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 (byte*) D018#1 ← phi( main::@6/(byte*) D018#2 ) - *((byte*) D018#1) ← (byte) 25 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -1606,17 +1606,17 @@ Alias (byte*) D018#1 = (byte*) D018#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) CHARSET#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word) 10240 - (byte[]) bits_count#0 ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 asm { sei } - *((byte*) PROCPORT#0) ← (byte) 50 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (byte*) CHARGEN#0 (byte*) main::charset4#0 ← (byte*) CHARSET4#0 to:main::@1 @@ -1628,16 +1628,16 @@ main::@1: scope:[main] from main main::@5 (byte*) main::charset4#10 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#0 main::@5/(byte[]) bits_count#6 ) (byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte) main::bits_gen#0 ← (byte) 0 - (byte*) main::chargen1#0 ← (byte*) main::chargen#2 + (byte) 1 - (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0 + (byte*) main::chargen1#0 ← (byte*) main::chargen#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← *((byte*) main::chargen#2) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte) main::bits#0 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte) 2 + (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$9) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 @@ -1650,18 +1650,18 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#0 ) (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#2 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (byte[]) bits_count#2 *idx (byte~) main::$16 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte) 2 + (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$19) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte) 1 + (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte*) D018#7 ← phi( main::@2/(byte*) D018#10 main::@8/(byte*) D018#10 ) @@ -1673,18 +1673,18 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#1 ) (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#3 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte) main::bits#2 ← (byte[]) bits_count#3 *idx (byte~) main::$26 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte) 2 + (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$29) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 + (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte*) D018#5 ← phi( main::@3/(byte*) D018#7 main::@9/(byte*) D018#7 ) @@ -1696,17 +1696,17 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#2 ) (byte*) main::chargen#10 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#4 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) - (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte) 1 + (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte) main::bits#3 ← (byte[]) bits_count#11 *idx (byte~) main::$35 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte) 2 + (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$38) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 + (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte*) D018#3 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#5 ) @@ -1717,21 +1717,21 @@ main::@5: scope:[main] from main::@10 main::@4 (byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#10 ) (byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#3 ) (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) - (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 + (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 - (byte*) main::chargen#1 ← (byte*) main::chargen#6 + (byte) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word) 2048 + (byte*) main::chargen#1 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 + (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 + (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 to:main::@5 main::@11: scope:[main] from main::@5 - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte*) D018#1 ← phi( main::@11/(byte*) D018#3 main::@6/(byte*) D018#1 ) @@ -1739,11 +1739,11 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((byte*) D018#1) ← (byte) 25 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -1766,17 +1766,17 @@ Alias (byte*) D018#10 = (byte*) D018#11 (byte*) D018#7 (byte*) D018#5 (byte*) D0 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) CHARSET#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word) 10240 - (byte[]) bits_count#0 ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 asm { sei } - *((byte*) PROCPORT#0) ← (byte) 50 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (byte*) CHARGEN#0 (byte*) main::charset4#0 ← (byte*) CHARSET4#0 to:main::@1 @@ -1788,79 +1788,79 @@ main::@1: scope:[main] from main main::@5 (byte*) main::charset4#10 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#0 main::@5/(byte[]) bits_count#1 ) (byte*) main::chargen#10 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte) main::bits_gen#0 ← (byte) 0 - (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 - (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0 + (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte) main::bits#0 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte) 2 + (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$9) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (byte[]) bits_count#1 *idx (byte~) main::$16 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte) 2 + (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$19) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte) 1 + (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte) main::bits#2 ← (byte[]) bits_count#1 *idx (byte~) main::$26 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte) 2 + (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$29) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 + (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) - (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 + (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte) main::bits#3 ← (byte[]) bits_count#1 *idx (byte~) main::$35 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte) 2 + (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$38) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 + (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) - (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 + (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 - (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#10 + (word) 2048 + (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 + (byte*~) main::$42 ← (byte*) CHARGEN#10 + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 + (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 to:main::@5 main::@11: scope:[main] from main::@5 - *((byte*) PROCPORT#10) ← (byte) 55 + *((byte*) PROCPORT#10) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte*) D018#1 ← phi( main::@11/(byte*) D018#10 main::@6/(byte*) D018#1 ) @@ -1868,11 +1868,11 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((byte*) D018#1) ← (byte) 25 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -1894,17 +1894,17 @@ Self Phi Eliminated (byte*) D018#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) CHARSET#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word) 10240 - (byte[]) bits_count#0 ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 asm { sei } - *((byte*) PROCPORT#0) ← (byte) 50 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (byte*) CHARGEN#0 (byte*) main::charset4#0 ← (byte*) CHARSET4#0 to:main::@1 @@ -1916,79 +1916,79 @@ main::@1: scope:[main] from main main::@5 (byte*) main::charset4#10 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte[]) bits_count#1 ← phi( main/(byte[]) bits_count#0 ) (byte*) main::chargen#10 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte) main::bits_gen#0 ← (byte) 0 - (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 - (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0 + (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte) main::bits#0 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte) 2 + (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$9) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (byte[]) bits_count#1 *idx (byte~) main::$16 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte) 2 + (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$19) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte) 1 + (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte) main::bits#2 ← (byte[]) bits_count#1 *idx (byte~) main::$26 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte) 2 + (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$29) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 + (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) - (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 + (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte) main::bits#3 ← (byte[]) bits_count#1 *idx (byte~) main::$35 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte) 2 + (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$38) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 + (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) - (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 + (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 - (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#10 + (word) 2048 + (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 + (byte*~) main::$42 ← (byte*) CHARGEN#10 + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 + (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 to:main::@5 main::@11: scope:[main] from main::@5 - *((byte*) PROCPORT#10) ← (byte) 55 + *((byte*) PROCPORT#10) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte*) D018#1 ← phi( main::@11/(byte*) D018#10 ) @@ -1996,11 +1996,11 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((byte*) D018#1) ← (byte) 25 + *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -2020,106 +2020,106 @@ Redundant Phi (byte*) D018#1 (byte*) D018#10 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) CHARSET#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word) 10240 - (byte[]) bits_count#0 ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 asm { sei } - *((byte*) PROCPORT#0) ← (byte) 50 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (byte*) CHARGEN#0 (byte*) main::charset4#0 ← (byte*) CHARSET4#0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) main::charset4#10 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte*) main::chargen#10 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte) main::bits_gen#0 ← (byte) 0 - (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 - (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0 + (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte) main::bits#0 ← (byte[]) bits_count#0 *idx (byte~) main::$6 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte) 2 + (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$9) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (byte[]) bits_count#0 *idx (byte~) main::$16 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte) 2 + (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$19) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte) 1 + (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte) main::bits#2 ← (byte[]) bits_count#0 *idx (byte~) main::$26 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte) 2 + (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$29) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 + (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) - (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 + (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte) main::bits#3 ← (byte[]) bits_count#0 *idx (byte~) main::$35 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte) 2 + (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 if((boolean~) main::$38) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 + (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) - (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 + (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 - (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#0 + (word) 2048 + (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 + (byte*~) main::$42 ← (byte*) CHARGEN#0 + (word/signed word) 2048 (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 if((boolean~) main::$43) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 + (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 to:main::@5 main::@11: scope:[main] from main::@5 - *((byte*) PROCPORT#0) ← (byte) 55 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte) 0 + (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 if((boolean~) main::$44) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((byte*) D018#0) ← (byte) 25 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -2129,109 +2129,109 @@ main::@return: scope:[main] from main::@12 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$9 if((byte) main::bits#0<(byte) 2) goto main::@2 -Simple Condition (boolean~) main::$19 if((byte) main::bits#1<(byte) 2) goto main::@3 -Simple Condition (boolean~) main::$29 if((byte) main::bits#2<(byte) 2) goto main::@4 -Simple Condition (boolean~) main::$38 if((byte) main::bits#3<(byte) 2) goto main::@5 +Simple Condition (boolean~) main::$9 if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 +Simple Condition (boolean~) main::$19 if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 +Simple Condition (boolean~) main::$29 if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 +Simple Condition (boolean~) main::$38 if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 Simple Condition (boolean~) main::$43 if((byte*) main::chargen#1<(byte*~) main::$42) goto main::@1 -Simple Condition (boolean~) main::$44 if((byte) main::i#1!=(byte) 0) goto main::@6 +Simple Condition (boolean~) main::$44 if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) CHARSET#0 ← (word) 8192 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word) 10240 - (byte[]) bits_count#0 ← { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } + (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } to:@1 main: scope:[main] from @1 asm { sei } - *((byte*) PROCPORT#0) ← (byte) 50 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (byte*) CHARGEN#0 (byte*) main::charset4#0 ← (byte*) CHARSET4#0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) main::charset4#10 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte*) main::chargen#10 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte) main::bits_gen#0 ← (byte) 0 - (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 - (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte) main::bits_gen#0 ← (byte/signed byte/word/signed word) 0 + (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte) main::bits#0 ← (byte[]) bits_count#0 *idx (byte~) main::$6 - if((byte) main::bits#0<(byte) 2) goto main::@2 + if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (byte[]) bits_count#0 *idx (byte~) main::$16 - if((byte) main::bits#1<(byte) 2) goto main::@3 + if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte) 1 + (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte) main::bits#2 ← (byte[]) bits_count#0 *idx (byte~) main::$26 - if((byte) main::bits#2<(byte) 2) goto main::@4 + if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 + (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) - (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 + (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte) main::bits#3 ← (byte[]) bits_count#0 *idx (byte~) main::$35 - if((byte) main::bits#3<(byte) 2) goto main::@5 + if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 + (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) - (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 + (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 - (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#0 + (word) 2048 + (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 + (byte*~) main::$42 ← (byte*) CHARGEN#0 + (word/signed word) 2048 if((byte*) main::chargen#1<(byte*~) main::$42) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 + (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 to:main::@5 main::@11: scope:[main] from main::@5 - *((byte*) PROCPORT#0) ← (byte) 55 + *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@6 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((byte*) D018#0) ← (byte) 25 + *((byte*) D018#0) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -2256,88 +2256,88 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*) main::chargen#0 ← (const byte*) CHARGEN#0 (byte*) main::charset4#0 ← (const byte*) CHARSET4#0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) main::charset4#10 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte*) main::chargen#10 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 - (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 - if((byte) main::bits#0<(byte) 2) goto main::@2 + if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(const byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 - if((byte) main::bits#1<(byte) 2) goto main::@3 + if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte) main::bits_gen#2 ← (const byte) main::bits_gen#0 + (byte) 1 + (byte) main::bits_gen#2 ← (const byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 - if((byte) main::bits#2<(byte) 2) goto main::@4 + if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 + (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) - (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 + (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 - if((byte) main::bits#3<(byte) 2) goto main::@5 + if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 + (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) - (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 + (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 - (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 - (byte*~) main::$42 ← (const byte*) CHARGEN#0 + (word) 2048 + (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 + (byte*~) main::$42 ← (const byte*) CHARGEN#0 + (word/signed word) 2048 if((byte*) main::chargen#1<(byte*~) main::$42) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 + (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 to:main::@5 main::@11: scope:[main] from main::@5 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(const byte) main::i#0 main::@6/(byte) main::i#1 ) *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@6 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((const byte*) D018#0) ← (byte) 25 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -2357,84 +2357,84 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) main::charset4#10 ← phi( main/(const byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 ) (byte*) main::chargen#10 ← phi( main/(const byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 ) - (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 - (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 - if((byte) main::bits#0<(byte) 2) goto main::@2 + if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(const byte) main::bits_gen#0 main::@7/(const byte) main::bits_gen#2 ) - (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 - if((byte) main::bits#1<(byte) 2) goto main::@3 + if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 - if((byte) main::bits#2<(byte) 2) goto main::@4 + if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 + (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) - (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 + (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 - if((byte) main::bits#3<(byte) 2) goto main::@5 + if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 + (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) - (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 + (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 - (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 + (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 if((byte*) main::chargen#1<(const byte*) main::$42) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 + (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 to:main::@5 main::@11: scope:[main] from main::@5 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@6 main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(const byte) main::i#0 main::@6/(byte) main::i#1 ) *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@6 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((const byte*) D018#0) ← (byte) 25 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -2487,96 +2487,96 @@ Inlining constant with var siblings (const byte) main::bits_gen#2 Inlining constant with var siblings (const byte) main::bits_gen#2 Inlining constant with var siblings (const byte) main::bits_gen#2 Inlining constant with different constant siblings (const byte) main::bits_gen#2 -Constant inlined main::charset4#0 = (const byte*) CHARSET4#0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::bits_gen#2 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 Constant inlined main::chargen#0 = (const byte*) CHARGEN#0 -Constant inlined main::bits_gen#0 = (byte) 0 -Constant inlined main::i#0 = (byte) 0 -Constant inlined main::bits_gen#2 = (byte) 0+(byte) 1 -Constant inlined main::$42 = (const byte*) CHARGEN#0+(word) 2048 +Constant inlined main::bits_gen#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::$42 = (const byte*) CHARGEN#0+(word/signed word) 2048 +Constant inlined main::charset4#0 = (const byte*) CHARSET4#0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) main::charset4#10 ← phi( main/(const byte*) CHARSET4#0 main::@5/(byte*) main::charset4#1 ) (byte*) main::chargen#10 ← phi( main/(const byte*) CHARGEN#0 main::@5/(byte*) main::chargen#1 ) - (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 - (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 - if((byte) main::bits#0<(byte) 2) goto main::@2 + if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 - (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) - (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) + (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 - if((byte) main::bits#1<(byte) 2) goto main::@3 + if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 - if((byte) main::bits#2<(byte) 2) goto main::@4 + if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 + (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) - (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 + (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 - if((byte) main::bits#3<(byte) 2) goto main::@5 + if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 + (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) - (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 + (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 - (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 - if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 + (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 + if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 + (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 to:main::@5 main::@11: scope:[main] from main::@5 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@6 main::@6: scope:[main] from main::@11 main::@6 - (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@6/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main::@11/(byte/signed byte/word/signed word) 0 main::@6/(byte) main::i#1 ) *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@6 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 - *((const byte*) D018#0) ← (byte) 25 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -2593,17 +2593,17 @@ FINAL SYMBOL TABLE (byte*) CHARGEN (const byte*) CHARGEN#0 = (word) 53248 (byte*) CHARSET -(const byte*) CHARSET#0 = (word) 8192 +(const byte*) CHARSET#0 = (word/signed word) 8192 (byte*) CHARSET4 -(const byte*) CHARSET4#0 = (word) 10240 +(const byte*) CHARSET4#0 = (word/signed word) 10240 (byte*) D018 (const byte*) D018#0 = (word) 53272 (byte*) PROCPORT -(const byte*) PROCPORT#0 = (byte) 1 +(const byte*) PROCPORT#0 = (byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte[]) bits_count -(const byte[]) bits_count#0 = { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } +(const byte[]) bits_count#0 = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (void()) main() (byte~) main::$1 (byte~) main::$12 @@ -2683,87 +2683,87 @@ CONTROL FLOW GRAPH - PHI LIFTED @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:main::@1 main::@1: scope:[main] from main main::@13 (byte*) main::charset4#10 ← phi( main/(const byte*) CHARSET4#0 main::@13/(byte*~) main::charset4#11 ) (byte*) main::chargen#10 ← phi( main/(const byte*) CHARGEN#0 main::@13/(byte*~) main::chargen#11 ) - (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 - (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 - (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 - (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 + (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 + (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 + (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 - (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 - (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 + (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 - if((byte) main::bits#0<(byte) 2) goto main::@2 + if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@7 - (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) - (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 + (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) + (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 + (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 - if((byte) main::bits#1<(byte) 2) goto main::@14 + if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@14 to:main::@8 main::@8: scope:[main] from main::@2 - (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 + (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 (byte~) main::bits_gen#18 ← (byte) main::bits_gen#4 to:main::@3 main::@3: scope:[main] from main::@14 main::@8 (byte) main::bits_gen#11 ← phi( main::@14/(byte~) main::bits_gen#17 main::@8/(byte~) main::bits_gen#18 ) - (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 + (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 - if((byte) main::bits#2<(byte) 2) goto main::@15 + if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@15 to:main::@9 main::@9: scope:[main] from main::@3 - (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 + (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 (byte~) main::bits_gen#20 ← (byte) main::bits_gen#6 to:main::@4 main::@4: scope:[main] from main::@15 main::@9 (byte) main::bits_gen#13 ← phi( main::@15/(byte~) main::bits_gen#19 main::@9/(byte~) main::bits_gen#20 ) - (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 + (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 + (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 - if((byte) main::bits#3<(byte) 2) goto main::@16 + if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@16 to:main::@10 main::@10: scope:[main] from main::@4 - (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 + (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 (byte~) main::bits_gen#21 ← (byte) main::bits_gen#8 to:main::@5 main::@5: scope:[main] from main::@10 main::@16 (byte) main::bits_gen#15 ← phi( main::@10/(byte~) main::bits_gen#21 main::@16/(byte~) main::bits_gen#22 ) - (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 + (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 - (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 - if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@13 + (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 + if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@13 to:main::@11 main::@11: scope:[main] from main::@5 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:main::@6 main::@6: scope:[main] from main::@11 main::@17 - (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@17/(byte~) main::i#3 ) + (byte) main::i#2 ← phi( main::@11/(byte/signed byte/word/signed word) 0 main::@17/(byte~) main::i#3 ) *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 0) goto main::@17 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@17 to:main::@12 main::@12: scope:[main] from main::@6 - *((const byte*) D018#0) ← (byte) 25 + *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 to:main::@return main::@return: scope:[main] from main::@12 return @@ -2836,87 +2836,87 @@ CONTROL FLOW GRAPH - LIVE RANGES FOUND @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] + [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] to:main::@1 main::@1: scope:[main] from main main::@13 [3] (byte*) main::charset4#10 ← phi( main/(const byte*) CHARSET4#0 main::@13/(byte*~) main::charset4#11 ) [ main::chargen#10 main::charset4#10 ] [3] (byte*) main::chargen#10 ← phi( main/(const byte*) CHARGEN#0 main::@13/(byte*~) main::chargen#11 ) [ main::chargen#10 main::charset4#10 ] - [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] - [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] - [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] - [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] + [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] + [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] + [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] + [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] - [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] - [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] + [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] + [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] - [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] + [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] to:main::@7 main::@7: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@7 - [13] (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] - [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] - [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] - [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] - [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] + [13] (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] + [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] + [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] + [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] + [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] - [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] + [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] - [21] if((byte) main::bits#1<(byte) 2) goto main::@14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] + [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] to:main::@8 main::@8: scope:[main] from main::@2 - [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] + [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] [23] (byte~) main::bits_gen#18 ← (byte) main::bits_gen#4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#18 ] to:main::@3 main::@3: scope:[main] from main::@14 main::@8 [24] (byte) main::bits_gen#11 ← phi( main::@14/(byte~) main::bits_gen#17 main::@8/(byte~) main::bits_gen#18 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] - [25] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] - [26] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] - [27] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] - [28] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] - [29] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] + [25] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] + [26] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] + [27] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] + [28] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] + [29] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] [30] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] [31] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] - [32] if((byte) main::bits#2<(byte) 2) goto main::@15 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] + [32] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@15 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] to:main::@9 main::@9: scope:[main] from main::@3 - [33] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] + [33] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] [34] (byte~) main::bits_gen#20 ← (byte) main::bits_gen#6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#20 ] to:main::@4 main::@4: scope:[main] from main::@15 main::@9 [35] (byte) main::bits_gen#13 ← phi( main::@15/(byte~) main::bits_gen#19 main::@9/(byte~) main::bits_gen#20 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] - [36] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] - [37] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] - [38] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] - [39] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] + [36] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] + [37] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] + [38] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] + [39] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] [40] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] [41] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] - [42] if((byte) main::bits#3<(byte) 2) goto main::@16 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] + [42] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@16 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] to:main::@10 main::@10: scope:[main] from main::@4 - [43] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] + [43] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] [44] (byte~) main::bits_gen#21 ← (byte) main::bits_gen#8 [ main::chargen#10 main::charset4#10 main::bits_gen#21 ] to:main::@5 main::@5: scope:[main] from main::@10 main::@16 [45] (byte) main::bits_gen#15 ← phi( main::@10/(byte~) main::bits_gen#21 main::@16/(byte~) main::bits_gen#22 ) [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] - [46] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] + [46] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] [47] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] [48] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ] - [49] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::charset4#1 main::chargen#1 ] - [50] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@13 [ main::charset4#1 main::chargen#1 ] + [49] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::charset4#1 main::chargen#1 ] + [50] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@13 [ main::charset4#1 main::chargen#1 ] to:main::@11 main::@11: scope:[main] from main::@5 - [51] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] + [51] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] asm { cli } to:main::@6 main::@6: scope:[main] from main::@11 main::@17 - [53] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@17/(byte~) main::i#3 ) [ main::i#2 ] + [53] (byte) main::i#2 ← phi( main::@11/(byte/signed byte/word/signed word) 0 main::@17/(byte~) main::i#3 ) [ main::i#2 ] [54] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] [55] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [56] if((byte) main::i#1!=(byte) 0) goto main::@17 [ main::i#1 ] + [56] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@17 [ main::i#1 ] to:main::@12 main::@12: scope:[main] from main::@6 - [57] *((const byte*) D018#0) ← (byte) 25 [ ] + [57] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] to:main::@return main::@return: scope:[main] from main::@12 [58] return [ ] @@ -3004,84 +3004,84 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] + [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] to:main::@1 main::@1: scope:[main] from main main::@5 [3] (byte*) main::charset4#10 ← phi( main/(const byte*) CHARSET4#0 main::@5/(byte*) main::charset4#1 ) [ main::chargen#10 main::charset4#10 ] [3] (byte*) main::chargen#10 ← phi( main/(const byte*) CHARGEN#0 main::@5/(byte*) main::chargen#1 ) [ main::chargen#10 main::charset4#10 ] - [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] - [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] - [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] - [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] + [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] + [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] + [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] + [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] - [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] - [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] + [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] + [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] - [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] + [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] to:main::@7 main::@7: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@7 - [13] (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] - [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] - [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] - [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] - [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] + [13] (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] + [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] + [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] + [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] + [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] - [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] + [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] - [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] + [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] to:main::@8 main::@8: scope:[main] from main::@2 - [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] + [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] to:main::@3 main::@3: scope:[main] from main::@2 main::@8 [23] (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] - [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] - [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] - [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] - [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] - [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] + [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] + [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] + [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] + [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] + [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] [30] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] - [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] + [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] to:main::@9 main::@9: scope:[main] from main::@3 - [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] + [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] to:main::@4 main::@4: scope:[main] from main::@3 main::@9 [33] (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] - [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] - [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] - [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] - [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] + [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] + [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] + [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] + [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] [39] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] - [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] + [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] to:main::@10 main::@10: scope:[main] from main::@4 - [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] + [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] to:main::@5 main::@5: scope:[main] from main::@10 main::@4 [42] (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] - [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] + [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] [45] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ] - [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] - [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] + [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] + [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] to:main::@11 main::@11: scope:[main] from main::@5 - [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] + [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] asm { cli } to:main::@6 main::@6: scope:[main] from main::@11 main::@6 - [50] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] + [50] (byte) main::i#2 ← phi( main::@11/(byte/signed byte/word/signed word) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] [51] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] + [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] to:main::@12 main::@12: scope:[main] from main::@6 - [54] *((const byte*) D018#0) ← (byte) 25 [ ] + [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] to:main::@return main::@return: scope:[main] from main::@12 [55] return [ ] @@ -3096,84 +3096,84 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED @end: scope:[] from @1 main: scope:[main] from @1 asm { sei } - [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) + [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@5 [3] (byte*) main::charset4#10 ← phi( main/(const byte*) CHARSET4#0 main::@5/(byte*) main::charset4#1 ) [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) [3] (byte*) main::chargen#10 ← phi( main/(const byte*) CHARGEN#0 main::@5/(byte*) main::chargen#1 ) [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) - [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) - [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) - [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) - [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) + [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) + [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) + [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) + [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) - [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) - [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) + [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) + [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) - [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) + [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) to:main::@7 main::@7: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@1 main::@7 - [13] (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ) - [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) - [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) - [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) - [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) + [13] (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ) + [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) + [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) + [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) + [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) - [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) + [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) - [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) + [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) to:main::@8 main::@8: scope:[main] from main::@2 - [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) + [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) to:main::@3 main::@3: scope:[main] from main::@2 main::@8 [23] (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] ) - [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) - [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) - [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) - [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) - [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) + [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) + [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) + [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) + [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) + [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) [30] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) - [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) + [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) to:main::@9 main::@9: scope:[main] from main::@3 - [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) + [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) to:main::@4 main::@4: scope:[main] from main::@3 main::@9 [33] (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] ) - [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) - [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) - [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) - [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) + [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) + [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) + [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) + [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) [39] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) - [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) + [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) to:main::@10 main::@10: scope:[main] from main::@4 - [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) + [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) to:main::@5 main::@5: scope:[main] from main::@10 main::@4 [42] (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] ) - [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) + [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) [45] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ] ( main:0 [ main::chargen#10 main::charset4#1 ] ) - [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) - [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) + [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) + [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) to:main::@11 main::@11: scope:[main] from main::@5 - [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) + [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) asm { cli } to:main::@6 main::@6: scope:[main] from main::@11 main::@6 - [50] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [50] (byte) main::i#2 ← phi( main::@11/(byte/signed byte/word/signed word) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [51] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@12 main::@12: scope:[main] from main::@6 - [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) + [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main::@12 [55] return [ ] ( main:0 [ ] ) @@ -3181,22 +3181,22 @@ main::@return: scope:[main] from main::@12 DOMINATORS @begin dominated by @begin -@1 dominated by @1 @begin -@end dominated by @1 @end @begin -main dominated by @1 @begin main -main::@1 dominated by @1 @begin main::@1 main -main::@7 dominated by @1 @begin main::@1 main main::@7 -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@8 dominated by @1 @begin main::@2 main::@1 main main::@8 -main::@3 dominated by @1 @begin main::@2 main::@1 main::@3 main -main::@9 dominated by @1 @begin main::@2 main::@1 main::@3 main main::@9 -main::@4 dominated by @1 @begin main::@2 main::@1 main::@4 main::@3 main -main::@10 dominated by @1 @begin main::@2 main::@1 main::@4 main::@3 main main::@10 -main::@5 dominated by @1 @begin main::@2 main::@1 main::@4 main::@3 main::@5 main -main::@11 dominated by @1 @begin main::@2 main::@1 main::@4 main::@3 main::@5 main main::@11 -main::@6 dominated by @1 @begin main::@2 main::@1 main::@4 main::@3 main::@6 main::@5 main main::@11 -main::@12 dominated by @1 @begin main::@2 main::@1 main::@4 main::@3 main::@6 main::@5 main main::@12 main::@11 -main::@return dominated by @1 @begin main::@2 main::@1 main::@4 main::@3 main::@6 main::@5 main main::@12 main::@return main::@11 +@1 dominated by @begin @1 +@end dominated by @begin @end @1 +main dominated by @begin main @1 +main::@1 dominated by @begin main @1 main::@1 +main::@7 dominated by main::@7 @begin main @1 main::@1 +main::@2 dominated by @begin main @1 main::@1 main::@2 +main::@8 dominated by @begin main::@8 main @1 main::@1 main::@2 +main::@3 dominated by @begin main @1 main::@1 main::@2 main::@3 +main::@9 dominated by main::@9 @begin main @1 main::@1 main::@2 main::@3 +main::@4 dominated by @begin main @1 main::@1 main::@2 main::@3 main::@4 +main::@10 dominated by @begin main::@10 main @1 main::@1 main::@2 main::@3 main::@4 +main::@5 dominated by @begin main @1 main::@1 main::@2 main::@5 main::@3 main::@4 +main::@11 dominated by main::@11 @begin main @1 main::@1 main::@2 main::@5 main::@3 main::@4 +main::@6 dominated by main::@11 @begin main @1 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 +main::@12 dominated by main::@11 @begin main main::@12 @1 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 +main::@return dominated by main::@return main::@11 @begin main main::@12 @1 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 Found back edge: Loop head: main::@1 tails: main::@5 blocks: null Found back edge: Loop head: main::@6 tails: main::@6 blocks: null @@ -3438,7 +3438,7 @@ main: { .label bits_gen_16 = 9 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -3461,7 +3461,7 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 + //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 lda chargen clc adc #1 @@ -3469,17 +3469,17 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$60 sta _1 - //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen1),y and #$60 sta _2 - //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- zpby1=zpby2_ror_2 + //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- zpby1=zpby2_ror_2 lda _2 lsr lsr @@ -3488,11 +3488,11 @@ main: { lda _1 ora _3 sta _4 - //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- zpby1=zpby2_ror_1 + //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- zpby1=zpby2_ror_1 lda _4 lsr sta _5 - //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- zpby1=zpby2_ror_2 + //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- zpby1=zpby2_ror_2 lda _5 lsr lsr @@ -3501,7 +3501,7 @@ main: { ldx _6 lda bits_count,x sta bits - //SEG24 [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpby1_lt_coby1_then_la1 + //SEG24 [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpby1_lt_coby1_then_la1 lda bits cmp #2 bcc b2_from_b1 @@ -3510,33 +3510,33 @@ main: { b7: //SEG26 [13] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG27 [13] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- zpby1=coby1 + //SEG27 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 [phi:main::@7->main::@2#0] -- zpby1=coby1 lda #0+1 sta bits_gen_9 jmp b2 //SEG28 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG29 [13] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG29 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #0 sta bits_gen_9 jmp b2 //SEG30 main::@2 b2: - //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=zpby2_rol_1 + //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=zpby2_rol_1 lda bits_gen_9 asl sta bits_gen - //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$18 sta _12 - //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen1),y and #$18 sta _13 - //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- zpby1=zpby2_ror_2 + //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- zpby1=zpby2_ror_2 lda _13 lsr lsr @@ -3545,7 +3545,7 @@ main: { lda _12 ora _14 sta _15 - //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- zpby1=zpby2_ror_1 + //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- zpby1=zpby2_ror_1 lda _15 lsr sta _16 @@ -3553,14 +3553,14 @@ main: { ldx _16 lda bits_count,x sta bits_1 - //SEG38 [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1_lt_coby1_then_la1 + //SEG38 [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1_lt_coby1_then_la1 lda bits_1 cmp #2 bcc b3_from_b2 jmp b8 //SEG39 main::@8 b8: - //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 + //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG41 [23] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] b3_from_b2: @@ -3569,25 +3569,25 @@ main: { jmp b3 //SEG43 main::@3 b3: - //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby2_rol_1 + //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby2_rol_1 lda bits_gen asl sta bits_gen_14 - //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #6 sta _22 - //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=zpby2_rol_1 + //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=zpby2_rol_1 lda _22 asl sta _23 - //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen1),y and #6 sta _24 - //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- zpby1=zpby2_ror_1 + //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- zpby1=zpby2_ror_1 lda _24 lsr sta _25 @@ -3599,14 +3599,14 @@ main: { ldx _26 lda bits_count,x sta bits_2 - //SEG51 [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1_lt_coby1_then_la1 + //SEG51 [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1_lt_coby1_then_la1 lda bits_2 cmp #2 bcc b4_from_b3 jmp b9 //SEG52 main::@9 b9: - //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 + //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 inc bits_gen_6 //SEG54 [33] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] b4_from_b3: @@ -3615,21 +3615,21 @@ main: { jmp b4 //SEG56 main::@4 b4: - //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby2_rol_1 + //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby2_rol_1 lda bits_gen_13 asl sta bits_gen_16 - //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #1 sta _32 - //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=zpby2_rol_2 + //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=zpby2_rol_2 lda _32 asl asl sta _33 - //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen1),y and #1 @@ -3642,14 +3642,14 @@ main: { ldx _35 lda bits_count,x sta bits_3 - //SEG63 [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- zpby1_lt_coby1_then_la1 + //SEG63 [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- zpby1_lt_coby1_then_la1 lda bits_3 cmp #2 bcc b5_from_b4 jmp b10 //SEG64 main::@10 b10: - //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 + //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 inc bits_gen_8 //SEG66 [42] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] b5_from_b10: @@ -3658,7 +3658,7 @@ main: { jmp b5 //SEG68 main::@5 b5: - //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- zpby1=zpby2_rol_1 + //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- zpby1=zpby2_rol_1 lda bits_gen_15 asl sta bits_gen_7 @@ -3671,7 +3671,7 @@ main: { bne !+ inc charset4+1 !: - //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda chargen clc adc #2 @@ -3679,7 +3679,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcc b1_from_b5 @@ -3691,14 +3691,14 @@ main: { jmp b11 //SEG74 main::@11 b11: - //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG76 asm { cli } cli //SEG77 [50] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG78 [50] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- zpby1=coby1 + //SEG78 [50] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@11->main::@6#0] -- zpby1=coby1 lda #0 sta i jmp b6 @@ -3714,13 +3714,13 @@ main: { sta SCREEN,x //SEG83 [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG84 [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_0_then_la1 + //SEG84 [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_0_then_la1 lda i bne b6_from_b6 jmp b12 //SEG85 main::@12 b12: - //SEG86 [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG86 [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta D018 jmp breturn @@ -3731,64 +3731,64 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) always clobbers reg byte a -Statement [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) always clobbers reg byte a reg byte y -Statement [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) always clobbers reg byte a reg byte y +Statement [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) always clobbers reg byte a +Statement [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) always clobbers reg byte a reg byte y +Statement [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ main::$1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ main::$1 ] Statement [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) always clobbers reg byte a reg byte y +Statement [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] -Statement [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) always clobbers reg byte a reg byte y +Statement [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ main::$12 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ main::$12 ] Statement [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) always clobbers reg byte a -Statement [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a -Statement [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) always clobbers reg byte a reg byte y +Statement [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a +Statement [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] -Statement [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) always clobbers reg byte a reg byte y +Statement [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ main::$23 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ main::$23 ] Statement [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) always clobbers reg byte a -Statement [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a -Statement [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) always clobbers reg byte a reg byte y +Statement [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a +Statement [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] -Statement [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) always clobbers reg byte a reg byte y +Statement [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ main::$33 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ main::$33 ] Statement [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) always clobbers reg byte a -Statement [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) always clobbers reg byte a +Statement [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) always clobbers reg byte a Statement [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) always clobbers reg byte y -Statement [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a -Statement [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a -Statement [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) always clobbers reg byte a -Statement [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) always clobbers reg byte a reg byte y -Statement [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) always clobbers reg byte a reg byte y +Statement [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a +Statement [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a +Statement [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) always clobbers reg byte a +Statement [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) always clobbers reg byte a reg byte y +Statement [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) always clobbers reg byte a reg byte y Statement [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) always clobbers reg byte a -Statement [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) always clobbers reg byte a reg byte y -Statement [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) always clobbers reg byte a reg byte y +Statement [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) always clobbers reg byte a reg byte y +Statement [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) always clobbers reg byte a reg byte y Statement [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) always clobbers reg byte a -Statement [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a -Statement [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) always clobbers reg byte a reg byte y -Statement [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) always clobbers reg byte a reg byte y +Statement [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a +Statement [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) always clobbers reg byte a reg byte y +Statement [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) always clobbers reg byte a reg byte y Statement [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) always clobbers reg byte a -Statement [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a -Statement [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) always clobbers reg byte a reg byte y -Statement [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) always clobbers reg byte a reg byte y +Statement [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a +Statement [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) always clobbers reg byte a reg byte y +Statement [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) always clobbers reg byte a reg byte y Statement [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) always clobbers reg byte a -Statement [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) always clobbers reg byte a +Statement [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) always clobbers reg byte a Statement [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) always clobbers reg byte y -Statement [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a -Statement [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a -Statement [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a +Statement [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a +Statement [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) always clobbers reg byte a Potential registers zp ZP_PTR_BYTE:2 [ main::chargen#10 main::chargen#1 ] : zp ZP_PTR_BYTE:2 , Potential registers zp ZP_PTR_BYTE:4 [ main::charset4#10 main::charset4#1 ] : zp ZP_PTR_BYTE:4 , Potential registers zp ZP_BYTE:6 [ main::bits_gen#9 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , @@ -3827,67 +3827,67 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 59.71: zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] 59.12: zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] 59.12: zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] 38.5: zp ZP_BYTE:10 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:14 [ main::$2 ] 22: zp ZP_BYTE:15 [ main::$3 ] 22: zp ZP_BYTE:16 [ main::$4 ] 22: zp ZP_BYTE:17 [ main::$5 ] 22: zp ZP_BYTE:18 [ main::$6 ] 22: zp ZP_BYTE:19 [ main::bits#0 ] 22: zp ZP_BYTE:21 [ main::$13 ] 22: zp ZP_BYTE:22 [ main::$14 ] 22: zp ZP_BYTE:23 [ main::$15 ] 22: zp ZP_BYTE:24 [ main::$16 ] 22: zp ZP_BYTE:25 [ main::bits#1 ] 22: zp ZP_BYTE:26 [ main::$22 ] 22: zp ZP_BYTE:28 [ main::$24 ] 22: zp ZP_BYTE:29 [ main::$25 ] 22: zp ZP_BYTE:30 [ main::$26 ] 22: zp ZP_BYTE:31 [ main::bits#2 ] 22: zp ZP_BYTE:32 [ main::$32 ] 22: zp ZP_BYTE:34 [ main::$34 ] 22: zp ZP_BYTE:35 [ main::$35 ] 22: zp ZP_BYTE:36 [ main::bits#3 ] 22: zp ZP_BYTE:37 [ main::bits_gen#7 ] 17.27: zp ZP_PTR_BYTE:2 [ main::chargen#10 main::chargen#1 ] 11: zp ZP_BYTE:6 [ main::bits_gen#9 ] 11: zp ZP_BYTE:33 [ main::$33 ] 8.12: zp ZP_PTR_BYTE:4 [ main::charset4#10 main::charset4#1 ] 7.33: zp ZP_BYTE:13 [ main::$1 ] 7.33: zp ZP_BYTE:20 [ main::$12 ] 7.33: zp ZP_BYTE:27 [ main::$23 ] 0.33: zp ZP_PTR_BYTE:11 [ main::chargen1#0 ] Uplift Scope [] -Uplifting [] best 5110 combination +Uplifting [] best 5180 combination Attempting to uplift remaining variables inzp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] -Uplifting [main] best 5110 combination zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] +Uplifting [main] best 5180 combination zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] -Uplifting [main] best 5110 combination zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] +Uplifting [main] best 5180 combination zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] -Uplifting [main] best 5110 combination zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] +Uplifting [main] best 5180 combination zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ main::i#2 main::i#1 ] -Uplifting [main] best 5010 combination reg byte x [ main::i#2 main::i#1 ] +Uplifting [main] best 5080 combination reg byte x [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ main::$2 ] -Uplifting [main] best 4950 combination reg byte a [ main::$2 ] +Uplifting [main] best 5020 combination reg byte a [ main::$2 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ main::$3 ] -Uplifting [main] best 4890 combination reg byte a [ main::$3 ] +Uplifting [main] best 4960 combination reg byte a [ main::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ main::$4 ] -Uplifting [main] best 4830 combination reg byte a [ main::$4 ] +Uplifting [main] best 4900 combination reg byte a [ main::$4 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ main::$5 ] -Uplifting [main] best 4770 combination reg byte a [ main::$5 ] +Uplifting [main] best 4840 combination reg byte a [ main::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ main::$6 ] -Uplifting [main] best 4730 combination reg byte a [ main::$6 ] +Uplifting [main] best 4800 combination reg byte a [ main::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ main::bits#0 ] -Uplifting [main] best 4670 combination reg byte a [ main::bits#0 ] +Uplifting [main] best 4740 combination reg byte a [ main::bits#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:21 [ main::$13 ] -Uplifting [main] best 4610 combination reg byte a [ main::$13 ] +Uplifting [main] best 4680 combination reg byte a [ main::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:22 [ main::$14 ] -Uplifting [main] best 4550 combination reg byte a [ main::$14 ] +Uplifting [main] best 4620 combination reg byte a [ main::$14 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ main::$15 ] -Uplifting [main] best 4490 combination reg byte a [ main::$15 ] +Uplifting [main] best 4560 combination reg byte a [ main::$15 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ main::$16 ] -Uplifting [main] best 4450 combination reg byte a [ main::$16 ] +Uplifting [main] best 4520 combination reg byte a [ main::$16 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ main::bits#1 ] -Uplifting [main] best 4390 combination reg byte a [ main::bits#1 ] +Uplifting [main] best 4460 combination reg byte a [ main::bits#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ main::$22 ] -Uplifting [main] best 4330 combination reg byte a [ main::$22 ] +Uplifting [main] best 4400 combination reg byte a [ main::$22 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ main::$24 ] -Uplifting [main] best 4270 combination reg byte a [ main::$24 ] +Uplifting [main] best 4340 combination reg byte a [ main::$24 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ main::$25 ] -Uplifting [main] best 4210 combination reg byte a [ main::$25 ] +Uplifting [main] best 4280 combination reg byte a [ main::$25 ] Attempting to uplift remaining variables inzp ZP_BYTE:30 [ main::$26 ] -Uplifting [main] best 4170 combination reg byte a [ main::$26 ] +Uplifting [main] best 4240 combination reg byte a [ main::$26 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ main::bits#2 ] -Uplifting [main] best 4110 combination reg byte a [ main::bits#2 ] +Uplifting [main] best 4180 combination reg byte a [ main::bits#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ main::$32 ] -Uplifting [main] best 4050 combination reg byte a [ main::$32 ] +Uplifting [main] best 4120 combination reg byte a [ main::$32 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ main::$34 ] -Uplifting [main] best 3990 combination reg byte a [ main::$34 ] +Uplifting [main] best 4060 combination reg byte a [ main::$34 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ main::$35 ] -Uplifting [main] best 3950 combination reg byte a [ main::$35 ] +Uplifting [main] best 4020 combination reg byte a [ main::$35 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ main::bits#3 ] -Uplifting [main] best 3890 combination reg byte a [ main::bits#3 ] +Uplifting [main] best 3960 combination reg byte a [ main::bits#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ main::bits_gen#7 ] -Uplifting [main] best 3830 combination reg byte a [ main::bits_gen#7 ] +Uplifting [main] best 3900 combination reg byte a [ main::bits_gen#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::bits_gen#9 ] -Uplifting [main] best 3740 combination reg byte a [ main::bits_gen#9 ] +Uplifting [main] best 3810 combination reg byte a [ main::bits_gen#9 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ main::$33 ] -Uplifting [main] best 3740 combination zp ZP_BYTE:33 [ main::$33 ] +Uplifting [main] best 3810 combination zp ZP_BYTE:33 [ main::$33 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ main::$1 ] -Uplifting [main] best 3740 combination zp ZP_BYTE:13 [ main::$1 ] +Uplifting [main] best 3810 combination zp ZP_BYTE:13 [ main::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ main::$12 ] -Uplifting [main] best 3740 combination zp ZP_BYTE:20 [ main::$12 ] +Uplifting [main] best 3810 combination zp ZP_BYTE:20 [ main::$12 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ main::$23 ] -Uplifting [main] best 3740 combination zp ZP_BYTE:27 [ main::$23 ] +Uplifting [main] best 3810 combination zp ZP_BYTE:27 [ main::$23 ] Coalescing zero page register [ zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] ] with [ zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] ] Coalescing zero page register [ zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] ] with [ zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] ] Coalescing zero page register [ zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] ] with [ zp ZP_BYTE:13 [ main::$1 ] ] @@ -3945,7 +3945,7 @@ main: { .label chargen = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -3967,7 +3967,7 @@ main: { //SEG14 [3] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG15 main::@1 b1: - //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 + //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 lda chargen clc adc #1 @@ -3975,72 +3975,72 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$60 sta _1 - //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen1),y and #$60 - //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 + //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 lsr lsr //SEG20 [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) -- aby=zpby1_bor_aby ora _1 - //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 + //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 lsr - //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 + //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 lsr lsr //SEG23 [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG24 [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 + //SEG24 [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b2_from_b1 //SEG25 main::@7 b7: //SEG26 [13] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG27 [13] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 + //SEG27 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 //SEG28 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG29 [13] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG29 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG30 main::@2 b2: - //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 + //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 asl sta bits_gen - //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$18 sta _12 - //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen1),y and #$18 - //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 + //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 lsr lsr //SEG35 [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- aby=zpby1_bor_aby ora _12 - //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 + //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 lsr //SEG37 [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG38 [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 + //SEG38 [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b3_from_b2 //SEG39 main::@8 b8: - //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 + //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG41 [23] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] b3_from_b2: @@ -4048,32 +4048,32 @@ main: { //SEG42 [23] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG43 main::@3 b3: - //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 + //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #6 - //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 + //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 asl sta _23 - //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen1),y and #6 - //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 + //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 lsr //SEG49 [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) -- aby=zpby1_bor_aby ora _23 //SEG50 [30] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG51 [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 + //SEG51 [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b4_from_b3 //SEG52 main::@9 b9: - //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 + //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG54 [33] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] b4_from_b3: @@ -4081,17 +4081,17 @@ main: { //SEG55 [33] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG56 main::@4 b4: - //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 + //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #1 - //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 + //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 asl asl sta _33 - //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen1),y and #1 @@ -4100,12 +4100,12 @@ main: { //SEG62 [39] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG63 [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 + //SEG63 [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b5_from_b4 //SEG64 main::@10 b10: - //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 + //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG66 [42] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] b5_from_b10: @@ -4113,7 +4113,7 @@ main: { //SEG67 [42] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG68 main::@5 b5: - //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 + //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 lda bits_gen asl //SEG70 [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) -- _deref_zpptrby1=aby @@ -4124,7 +4124,7 @@ main: { bne !+ inc charset4+1 !: - //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda chargen clc adc #2 @@ -4132,7 +4132,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcc b1_from_b5 @@ -4143,14 +4143,14 @@ main: { !: //SEG74 main::@11 b11: - //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG76 asm { cli } cli //SEG77 [50] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG78 [50] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 + //SEG78 [50] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 jmp b6 //SEG79 [50] phi from main::@6 to main::@6 [phi:main::@6->main::@6] @@ -4163,12 +4163,12 @@ main: { sta SCREEN,x //SEG83 [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG84 [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG84 [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b6_from_b6 //SEG85 main::@12 b12: - //SEG86 [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG86 [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta D018 //SEG87 main::@return @@ -4215,7 +4215,7 @@ main: { .label chargen = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -4237,7 +4237,7 @@ main: { //SEG14 [3] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG15 main::@1 b1: - //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 + //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 lda chargen clc adc #1 @@ -4245,70 +4245,70 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$60 sta _1 - //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$60 - //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 + //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 lsr lsr //SEG20 [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) -- aby=zpby1_bor_aby ora _1 - //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 + //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 lsr - //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 + //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 lsr lsr //SEG23 [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG24 [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 + //SEG24 [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b2_from_b1 //SEG25 main::@7 b7: //SEG26 [13] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG27 [13] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 + //SEG27 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 //SEG28 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG29 [13] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG29 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG30 main::@2 b2: - //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 + //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 asl sta bits_gen - //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$18 sta _12 - //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$18 - //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 + //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 lsr lsr //SEG35 [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- aby=zpby1_bor_aby ora _12 - //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 + //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 lsr //SEG37 [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG38 [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 + //SEG38 [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b3_from_b2 //SEG39 main::@8 b8: - //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 + //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG41 [23] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] b3_from_b2: @@ -4316,31 +4316,31 @@ main: { //SEG42 [23] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG43 main::@3 b3: - //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 + //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #6 - //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 + //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 asl sta _23 - //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #6 - //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 + //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 lsr //SEG49 [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) -- aby=zpby1_bor_aby ora _23 //SEG50 [30] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG51 [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 + //SEG51 [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b4_from_b3 //SEG52 main::@9 b9: - //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 + //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG54 [33] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] b4_from_b3: @@ -4348,17 +4348,17 @@ main: { //SEG55 [33] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG56 main::@4 b4: - //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 + //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #1 - //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 + //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 asl asl sta _33 - //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #1 //SEG61 [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) -- aby=zpby1_bor_aby @@ -4366,12 +4366,12 @@ main: { //SEG62 [39] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG63 [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 + //SEG63 [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b5_from_b4 //SEG64 main::@10 b10: - //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 + //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG66 [42] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] b5_from_b10: @@ -4379,7 +4379,7 @@ main: { //SEG67 [42] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG68 main::@5 b5: - //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 + //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 lda bits_gen asl //SEG70 [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) -- _deref_zpptrby1=aby @@ -4390,7 +4390,7 @@ main: { bne !+ inc charset4+1 !: - //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda chargen clc adc #2 @@ -4398,7 +4398,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcc b1_from_b5 @@ -4409,14 +4409,14 @@ main: { !: //SEG74 main::@11 b11: - //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG76 asm { cli } cli //SEG77 [50] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG78 [50] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 + //SEG78 [50] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 jmp b6 //SEG79 [50] phi from main::@6 to main::@6 [phi:main::@6->main::@6] @@ -4429,12 +4429,12 @@ main: { sta SCREEN,x //SEG83 [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG84 [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG84 [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b6_from_b6 //SEG85 main::@12 b12: - //SEG86 [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG86 [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta D018 //SEG87 main::@return @@ -4492,7 +4492,7 @@ main: { .label chargen = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -4513,7 +4513,7 @@ main: { //SEG14 [3] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG15 main::@1 b1: - //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 + //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 lda chargen clc adc #1 @@ -4521,115 +4521,115 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$60 sta _1 - //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$60 - //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 + //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 lsr lsr //SEG20 [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) -- aby=zpby1_bor_aby ora _1 - //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 + //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 lsr - //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 + //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 lsr lsr //SEG23 [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG24 [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 + //SEG24 [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b2_from_b1 //SEG25 main::@7 b7: //SEG26 [13] phi from main::@7 to main::@2 [phi:main::@7->main::@2] - //SEG27 [13] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 + //SEG27 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 //SEG28 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG29 [13] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG29 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG30 main::@2 b2: - //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 + //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 asl sta bits_gen - //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$18 sta _12 - //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$18 - //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 + //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 lsr lsr //SEG35 [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- aby=zpby1_bor_aby ora _12 - //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 + //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 lsr //SEG37 [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG38 [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 + //SEG38 [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b3 //SEG39 main::@8 b8: - //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 + //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG41 [23] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] //SEG42 [23] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG43 main::@3 b3: - //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 + //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #6 - //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 + //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 asl sta _23 - //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #6 - //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 + //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 lsr //SEG49 [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) -- aby=zpby1_bor_aby ora _23 //SEG50 [30] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG51 [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 + //SEG51 [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b4 //SEG52 main::@9 b9: - //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 + //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG54 [33] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] //SEG55 [33] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG56 main::@4 b4: - //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 + //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #1 - //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 + //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 asl asl sta _33 - //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #1 //SEG61 [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) -- aby=zpby1_bor_aby @@ -4637,18 +4637,18 @@ main: { //SEG62 [39] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG63 [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 + //SEG63 [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b5 //SEG64 main::@10 b10: - //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 + //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG66 [42] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] //SEG67 [42] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG68 main::@5 b5: - //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 + //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 lda bits_gen asl //SEG70 [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) -- _deref_zpptrby1=aby @@ -4659,7 +4659,7 @@ main: { bne !+ inc charset4+1 !: - //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda chargen clc adc #2 @@ -4667,7 +4667,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcc b1 @@ -4678,14 +4678,14 @@ main: { !: //SEG74 main::@11 b11: - //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG76 asm { cli } cli //SEG77 [50] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG78 [50] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 + //SEG78 [50] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 jmp b6 //SEG79 [50] phi from main::@6 to main::@6 [phi:main::@6->main::@6] @@ -4697,12 +4697,12 @@ main: { sta SCREEN,x //SEG83 [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG84 [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG84 [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b6 //SEG85 main::@12 b12: - //SEG86 [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG86 [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta D018 //SEG87 main::@return @@ -4753,7 +4753,7 @@ main: { .label chargen = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -4773,7 +4773,7 @@ main: { //SEG14 [3] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG15 main::@1 b1: - //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 + //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 lda chargen clc adc #1 @@ -4781,112 +4781,112 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$60 sta _1 - //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$60 - //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 + //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 lsr lsr //SEG20 [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) -- aby=zpby1_bor_aby ora _1 - //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 + //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 lsr - //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 + //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 lsr lsr //SEG23 [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG24 [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 + //SEG24 [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b2_from_b1 //SEG25 main::@7 //SEG26 [13] phi from main::@7 to main::@2 [phi:main::@7->main::@2] - //SEG27 [13] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 + //SEG27 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 //SEG28 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG29 [13] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG29 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG30 main::@2 b2: - //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 + //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 asl sta bits_gen - //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$18 sta _12 - //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$18 - //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 + //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 lsr lsr //SEG35 [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- aby=zpby1_bor_aby ora _12 - //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 + //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 lsr //SEG37 [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG38 [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 + //SEG38 [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b3 //SEG39 main::@8 - //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 + //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG41 [23] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] //SEG42 [23] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG43 main::@3 b3: - //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 + //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #6 - //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 + //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 asl sta _23 - //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #6 - //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 + //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 lsr //SEG49 [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) -- aby=zpby1_bor_aby ora _23 //SEG50 [30] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG51 [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 + //SEG51 [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b4 //SEG52 main::@9 - //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 + //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG54 [33] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] //SEG55 [33] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG56 main::@4 b4: - //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 + //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #1 - //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 + //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 asl asl sta _33 - //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #1 //SEG61 [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) -- aby=zpby1_bor_aby @@ -4894,17 +4894,17 @@ main: { //SEG62 [39] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG63 [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 + //SEG63 [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b5 //SEG64 main::@10 - //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 + //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG66 [42] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] //SEG67 [42] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG68 main::@5 b5: - //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 + //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 lda bits_gen asl //SEG70 [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) -- _deref_zpptrby1=aby @@ -4915,7 +4915,7 @@ main: { bne !+ inc charset4+1 !: - //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda chargen clc adc #2 @@ -4923,7 +4923,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcc b1 @@ -4933,13 +4933,13 @@ main: { bcc b1 !: //SEG74 main::@11 - //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG76 asm { cli } cli //SEG77 [50] phi from main::@11 to main::@6 [phi:main::@11->main::@6] - //SEG78 [50] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 + //SEG78 [50] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 jmp b6 //SEG79 [50] phi from main::@6 to main::@6 [phi:main::@6->main::@6] @@ -4951,11 +4951,11 @@ main: { sta SCREEN,x //SEG83 [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG84 [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG84 [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b6 //SEG85 main::@12 - //SEG86 [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG86 [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta D018 //SEG87 main::@return @@ -4996,7 +4996,7 @@ main: { .label chargen = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -5015,7 +5015,7 @@ main: { //SEG14 [3] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG15 main::@1 b1: - //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 + //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 lda chargen clc adc #1 @@ -5023,112 +5023,112 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$60 sta _1 - //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$60 - //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 + //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 lsr lsr //SEG20 [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) -- aby=zpby1_bor_aby ora _1 - //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 + //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 lsr - //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 + //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 lsr lsr //SEG23 [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG24 [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 + //SEG24 [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b2_from_b1 //SEG25 main::@7 //SEG26 [13] phi from main::@7 to main::@2 [phi:main::@7->main::@2] - //SEG27 [13] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 + //SEG27 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 //SEG28 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG29 [13] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG29 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG30 main::@2 b2: - //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 + //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 asl sta bits_gen - //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$18 sta _12 - //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$18 - //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 + //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 lsr lsr //SEG35 [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- aby=zpby1_bor_aby ora _12 - //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 + //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 lsr //SEG37 [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG38 [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 + //SEG38 [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b3 //SEG39 main::@8 - //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 + //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG41 [23] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] //SEG42 [23] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG43 main::@3 b3: - //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 + //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #6 - //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 + //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 asl sta _23 - //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #6 - //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 + //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 lsr //SEG49 [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) -- aby=zpby1_bor_aby ora _23 //SEG50 [30] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG51 [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 + //SEG51 [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b4 //SEG52 main::@9 - //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 + //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG54 [33] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] //SEG55 [33] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG56 main::@4 b4: - //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 + //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #1 - //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 + //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 asl asl sta _33 - //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #1 //SEG61 [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) -- aby=zpby1_bor_aby @@ -5136,17 +5136,17 @@ main: { //SEG62 [39] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG63 [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 + //SEG63 [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b5 //SEG64 main::@10 - //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 + //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG66 [42] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] //SEG67 [42] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG68 main::@5 b5: - //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 + //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 lda bits_gen asl //SEG70 [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) -- _deref_zpptrby1=aby @@ -5157,7 +5157,7 @@ main: { bne !+ inc charset4+1 !: - //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda chargen clc adc #2 @@ -5165,7 +5165,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcc b1 @@ -5175,13 +5175,13 @@ main: { bcc b1 !: //SEG74 main::@11 - //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG76 asm { cli } cli //SEG77 [50] phi from main::@11 to main::@6 [phi:main::@11->main::@6] - //SEG78 [50] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 + //SEG78 [50] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 //SEG79 [50] phi from main::@6 to main::@6 [phi:main::@6->main::@6] //SEG80 [50] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy @@ -5192,11 +5192,11 @@ main: { sta SCREEN,x //SEG83 [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG84 [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG84 [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b6 //SEG85 main::@12 - //SEG86 [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG86 [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta D018 //SEG87 main::@return @@ -5211,17 +5211,17 @@ FINAL SYMBOL TABLE (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = (word) 53248 (byte*) CHARSET -(const byte*) CHARSET#0 CHARSET = (word) 8192 +(const byte*) CHARSET#0 CHARSET = (word/signed word) 8192 (byte*) CHARSET4 -(const byte*) CHARSET4#0 CHARSET4 = (word) 10240 +(const byte*) CHARSET4#0 CHARSET4 = (word/signed word) 10240 (byte*) D018 (const byte*) D018#0 D018 = (word) 53272 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte) 1 +(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[]) bits_count -(const byte[]) bits_count#0 bits_count = { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } +(const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (void()) main() (byte~) main::$1 $1 zp ZP_BYTE:6 7.333333333333333 (byte~) main::$12 $12 zp ZP_BYTE:9 7.333333333333333 @@ -5344,7 +5344,7 @@ main: { .label chargen = 2 //SEG7 asm { sei } sei - //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] @@ -5363,7 +5363,7 @@ main: { //SEG14 [3] phi (byte*) main::chargen#10 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG15 main::@1 b1: - //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 + //SEG16 [4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- zpptrby1=zpptrby2_plus_1 lda chargen clc adc #1 @@ -5371,112 +5371,112 @@ main: { lda chargen+1 adc #0 sta chargen1+1 - //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG17 [5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$60 sta _1 - //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG18 [6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$60 - //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 + //SEG19 [7] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) -- aby=aby_ror_2 lsr lsr //SEG20 [8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) -- aby=zpby1_bor_aby ora _1 - //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 + //SEG21 [9] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) -- aby=aby_ror_1 lsr - //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 + //SEG22 [10] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- aby=aby_ror_2 lsr lsr //SEG23 [11] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG24 [12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 + //SEG24 [12] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b2_from_b1 //SEG25 main::@7 //SEG26 [13] phi from main::@7 to main::@2 [phi:main::@7->main::@2] - //SEG27 [13] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 + //SEG27 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 //SEG28 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG29 [13] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 + //SEG29 [13] phi (byte) main::bits_gen#9 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG30 main::@2 b2: - //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 + //SEG31 [14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- zpby1=aby_rol_1 asl sta bits_gen - //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 + //SEG32 [15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- zpby1=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #$18 sta _12 - //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG33 [16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #$18 - //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 + //SEG34 [17] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- aby=aby_ror_2 lsr lsr //SEG35 [18] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- aby=zpby1_bor_aby ora _12 - //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 + //SEG36 [19] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- aby=aby_ror_1 lsr //SEG37 [20] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG38 [21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 + //SEG38 [21] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b3 //SEG39 main::@8 - //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 + //SEG40 [22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG41 [23] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] //SEG42 [23] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG43 main::@3 b3: - //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 + //SEG44 [24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG45 [25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #6 - //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 + //SEG46 [26] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- zpby1=aby_rol_1 asl sta _23 - //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG47 [27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #6 - //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 + //SEG48 [28] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- aby=aby_ror_1 lsr //SEG49 [29] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) -- aby=zpby1_bor_aby ora _23 //SEG50 [30] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG51 [31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 + //SEG51 [31] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b4 //SEG52 main::@9 - //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 + //SEG53 [32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG54 [33] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] //SEG55 [33] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG56 main::@4 b4: - //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 + //SEG57 [34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- zpby1=zpby1_rol_1 asl bits_gen - //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG58 [35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- aby=_deref_zpptrby1_band_coby1 ldy #0 lda (chargen),y and #1 - //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 + //SEG59 [36] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- zpby1=aby_rol_2 asl asl sta _33 - //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 + //SEG60 [37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- aby=_deref_zpptrby1_band_coby1 lda (chargen1),y and #1 //SEG61 [38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) -- aby=zpby1_bor_aby @@ -5484,17 +5484,17 @@ main: { //SEG62 [39] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- aby=cowo1_derefidx_aby tax lda bits_count,x - //SEG63 [40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 + //SEG63 [40] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- aby_lt_coby1_then_la1 cmp #2 bcc b5 //SEG64 main::@10 - //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 + //SEG65 [41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ) -- zpby1=zpby1_plus_1 inc bits_gen //SEG66 [42] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] //SEG67 [42] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG68 main::@5 b5: - //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 + //SEG69 [43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) -- aby=zpby1_rol_1 lda bits_gen asl //SEG70 [44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] ) -- _deref_zpptrby1=aby @@ -5505,7 +5505,7 @@ main: { bne !+ inc charset4+1 !: - //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG72 [46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda chargen clc adc #2 @@ -5513,7 +5513,7 @@ main: { bcc !+ inc chargen+1 !: - //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG73 [47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word/signed word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda chargen+1 cmp #>CHARGEN+$800 bcc b1 @@ -5523,13 +5523,13 @@ main: { bcc b1 !: //SEG74 main::@11 - //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG75 [48] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG76 asm { cli } cli //SEG77 [50] phi from main::@11 to main::@6 [phi:main::@11->main::@6] - //SEG78 [50] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 + //SEG78 [50] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 //SEG79 [50] phi from main::@6 to main::@6 [phi:main::@6->main::@6] //SEG80 [50] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy @@ -5540,11 +5540,11 @@ main: { sta SCREEN,x //SEG83 [52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG84 [53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 + //SEG84 [53] if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_0_then_la1 cpx #0 bne b6 //SEG85 main::@12 - //SEG86 [54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG86 [54] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta D018 //SEG87 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym index 78409193f..b9544c1cc 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym @@ -4,17 +4,17 @@ (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = (word) 53248 (byte*) CHARSET -(const byte*) CHARSET#0 CHARSET = (word) 8192 +(const byte*) CHARSET#0 CHARSET = (word/signed word) 8192 (byte*) CHARSET4 -(const byte*) CHARSET4#0 CHARSET4 = (word) 10240 +(const byte*) CHARSET4#0 CHARSET4 = (word/signed word) 10240 (byte*) D018 (const byte*) D018#0 D018 = (word) 53272 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte) 1 +(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[]) bits_count -(const byte[]) bits_count#0 bits_count = { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 } +(const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (void()) main() (byte~) main::$1 $1 zp ZP_BYTE:6 7.333333333333333 (byte~) main::$12 $12 zp ZP_BYTE:9 7.333333333333333 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ifmin.cfg b/src/main/java/dk/camelot64/kickc/test/ref/ifmin.cfg index ff6a34770..db35536cd 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ifmin.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/ifmin.cfg @@ -8,15 +8,15 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@3 main::@3: scope:[main] from main::@1 [4] *((const byte*) SCREEN#0) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1<(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 [7] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log b/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log index c671f4d49..4b45cd4a6 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log @@ -11,17 +11,17 @@ void main() { } Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (boolean~) main::$0 ← (byte) main::i < (byte) 50 + (boolean~) main::$0 ← (byte) main::i < (byte/signed byte/word/signed word) 50 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 *((byte*) SCREEN) ← (byte) main::i main::@2: (byte) main::i ← ++ (byte) main::i - (boolean~) main::$2 ← (byte) main::i < (byte) 100 + (boolean~) main::$2 ← (byte) main::i < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 main::@return: return @@ -41,19 +41,19 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$0 ← (byte) main::i < (byte) 50 + (boolean~) main::$0 ← (byte) main::i < (byte/signed byte/word/signed word) 50 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$2 ← (byte) main::i < (byte) 100 + (boolean~) main::$2 ← (byte) main::i < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 @@ -72,19 +72,19 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$0 ← (byte) main::i < (byte) 50 + (boolean~) main::$0 ← (byte) main::i < (byte/signed byte/word/signed word) 50 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$2 ← (byte) main::i < (byte) 100 + (boolean~) main::$2 ← (byte) main::i < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -102,19 +102,19 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$0 ← (byte) main::i < (byte) 50 + (boolean~) main::$0 ← (byte) main::i < (byte/signed byte/word/signed word) 50 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$2 ← (byte) main::i < (byte) 100 + (boolean~) main::$2 ← (byte) main::i < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -136,16 +136,16 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 main::@2/(byte*) SCREEN#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 < (byte) 50 + (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 50 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 @@ -153,7 +153,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#4 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 < (byte) 100 + (boolean~) main::$2 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -174,16 +174,16 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 main::@2/(byte*) SCREEN#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 < (byte) 50 + (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 50 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 @@ -191,7 +191,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#4 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 < (byte) 100 + (boolean~) main::$2 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -241,16 +241,16 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 main::@2/(byte*) SCREEN#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 < (byte) 50 + (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 50 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 @@ -258,7 +258,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#4 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 < (byte) 100 + (boolean~) main::$2 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -275,27 +275,27 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$1 ← (byte) main::i#2 >= (byte) 50 from (boolean~) main::$0 ← (byte) main::i#2 < (byte) 50 +Inversing boolean not (boolean~) main::$1 ← (byte) main::i#2 >= (byte/signed byte/word/signed word) 50 from (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 50 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 main::@2/(byte*) SCREEN#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#2 >= (byte) 50 + (boolean~) main::$1 ← (byte) main::i#2 >= (byte/signed byte/word/signed word) 50 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#4 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 < (byte) 100 + (boolean~) main::$2 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -318,22 +318,22 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 main::@2/(byte*) SCREEN#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#2 >= (byte) 50 + (boolean~) main::$1 ← (byte) main::i#2 >= (byte/signed byte/word/signed word) 50 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#4 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 < (byte) 100 + (boolean~) main::$2 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -352,20 +352,20 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#4 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 main::@2/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#2 >= (byte) 50 + (boolean~) main::$1 ← (byte) main::i#2 >= (byte/signed byte/word/signed word) 50 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 < (byte) 100 + (boolean~) main::$2 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -383,20 +383,20 @@ Self Phi Eliminated (byte*) SCREEN#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#2 >= (byte) 50 + (boolean~) main::$1 ← (byte) main::i#2 >= (byte/signed byte/word/signed word) 50 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 < (byte) 100 + (boolean~) main::$2 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -414,19 +414,19 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#2 >= (byte) 50 + (boolean~) main::$1 ← (byte) main::i#2 >= (byte/signed byte/word/signed word) 50 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 < (byte) 100 + (boolean~) main::$2 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 100 if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -440,23 +440,23 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$1 if((byte) main::i#2>=(byte) 50) goto main::@2 -Simple Condition (boolean~) main::$2 if((byte) main::i#1<(byte) 100) goto main::@1 +Simple Condition (boolean~) main::$1 if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 +Simple Condition (boolean~) main::$2 if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - if((byte) main::i#2>=(byte) 50) goto main::@2 + if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 100) goto main::@1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 *((byte*) SCREEN#0) ← (byte) main::i#2 @@ -479,11 +479,11 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@2/(byte) main::i#1 ) - if((byte) main::i#2>=(byte) 50) goto main::@2 + if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 100) goto main::@1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 *((const byte*) SCREEN#0) ← (byte) main::i#2 @@ -498,7 +498,7 @@ main::@return: scope:[main] from main::@2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -506,12 +506,12 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) - if((byte) main::i#2>=(byte) 50) goto main::@2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) + if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 100) goto main::@1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 *((const byte*) SCREEN#0) ← (byte) main::i#2 @@ -529,7 +529,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -552,15 +552,15 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) - if((byte) main::i#2>=(byte) 50) goto main::@2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) + if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@1 *((const byte*) SCREEN#0) ← (byte) main::i#2 to:main::@2 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1<(byte) 100) goto main::@5 + if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@5 to:main::@return main::@return: scope:[main] from main::@2 return @@ -586,15 +586,15 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) [ main::i#2 ] - [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) [ main::i#2 ] + [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] to:main::@3 main::@3: scope:[main] from main::@1 [4] *((const byte*) SCREEN#0) ← (byte) main::i#2 [ main::i#2 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1<(byte) 100) goto main::@5 [ main::i#1 ] + [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@5 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@2 [7] return [ ] @@ -622,15 +622,15 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] - [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] + [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] to:main::@3 main::@3: scope:[main] from main::@1 [4] *((const byte*) SCREEN#0) ← (byte) main::i#2 [ main::i#2 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1<(byte) 100) goto main::@1 [ main::i#1 ] + [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@2 [7] return [ ] @@ -647,15 +647,15 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@3 main::@3: scope:[main] from main::@1 [4] *((const byte*) SCREEN#0) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1<(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 [7] return [ ] ( main:0 [ ] ) @@ -664,12 +664,12 @@ main::@return: scope:[main] from main::@2 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@3 dominated by @1 @begin main::@1 main::@3 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main +main::@3 dominated by @1 @begin main::@1 main main::@3 +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main Found back edge: Loop head: main::@1 tails: main::@2 blocks: null Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 main::@3 @@ -719,7 +719,7 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -729,7 +729,7 @@ main: { jmp b1 //SEG12 main::@1 b1: - //SEG13 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- zpby1_ge_coby1_then_la1 + //SEG13 [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- zpby1_ge_coby1_then_la1 lda i cmp #$32 bcs b2 @@ -744,7 +744,7 @@ main: { b2: //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG18 [6] if((byte) main::i#1<(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_lt_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_lt_coby1_then_la1 lda i cmp #$64 bcc b1_from_b2 @@ -792,7 +792,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -800,7 +800,7 @@ main: { //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 + //SEG13 [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 cpx #$32 bcs b2 //SEG14 main::@3 @@ -811,7 +811,7 @@ main: { b2: //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1<(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$64 bcc b1_from_b2 //SEG19 main::@return @@ -844,14 +844,14 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 + //SEG13 [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 cpx #$32 bcs b2 //SEG14 main::@3 @@ -862,7 +862,7 @@ main: { b2: //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1<(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$64 bcc b1 //SEG19 main::@return @@ -893,14 +893,14 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 + //SEG13 [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 cpx #$32 bcs b2 //SEG14 main::@3 @@ -910,7 +910,7 @@ main: { b2: //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1<(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$64 bcc b1 //SEG19 main::@return @@ -936,13 +936,13 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 + //SEG13 [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 cpx #$32 bcs b2 //SEG14 main::@3 @@ -952,7 +952,7 @@ main: { b2: //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1<(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$64 bcc b1 //SEG19 main::@return @@ -965,7 +965,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -993,13 +993,13 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 + //SEG13 [3] if((byte) main::i#2>=(byte/signed byte/word/signed word) 50) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_ge_coby1_then_la1 cpx #$32 bcs b2 //SEG14 main::@3 @@ -1009,7 +1009,7 @@ main: { b2: //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1<(byte) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 100) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$64 bcc b1 //SEG19 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ifmin.sym b/src/main/java/dk/camelot64/kickc/test/ref/ifmin.sym index 50d702e87..33a9ba1f3 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ifmin.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/ifmin.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/incd020.log b/src/main/java/dk/camelot64/kickc/test/ref/incd020.log index 702b90020..b6ed0e30e 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/incd020.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/incd020.log @@ -366,10 +366,10 @@ main::@return: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@return dominated by @1 main::@return @begin main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main Found back edge: Loop head: main::@1 tails: main::@1 blocks: null Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inline-asm.log b/src/main/java/dk/camelot64/kickc/test/ref/inline-asm.log index 6f26a0d6c..25695d30d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inline-asm.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inline-asm.log @@ -190,9 +190,9 @@ main::@return: scope:[main] from main DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main -main::@return dominated by @1 main::@return @begin main +main::@return dominated by main::@return @1 @begin main NATURAL LOOPS diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.cfg b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.cfg index 659d46b4f..1a8e69458 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.cfg @@ -8,17 +8,17 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) - [2] (byte) main::j#3 ← phi( main/(byte) 0 main::@2/(byte) main::j#4 ) [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) + [2] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) [3] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] ( main:0 [ main::j#3 main::i#2 main::$0 ] ) [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:0 [ main::i#2 main::j#1 ] ) - [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [7] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte) 0 ) [ main::i#2 main::j#4 ] ( main:0 [ main::i#2 main::j#4 ] ) + [7] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:0 [ main::i#2 main::j#4 ] ) [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) - [9] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log index d178d4432..076cd722b 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log @@ -13,22 +13,22 @@ void main() { } Adding pre/post-modifier (byte) main::j ← ++ (byte) main::j PROGRAM - (byte*) SCREEN ← (word) 1024 - (byte[]) TXT ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN ← (word/signed word) 1024 + (byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } proc (void()) main() - (byte) main::j ← (byte) 0 - (byte) main::i ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: (byte~) main::$0 ← (byte[]) TXT *idx (byte) main::j *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte) 8 + (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 main::@2: (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte) 101 + (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 main::@return: return @@ -51,28 +51,28 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (byte[]) TXT ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN ← (word/signed word) 1024 + (byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from - (byte) main::j ← (byte) 0 - (byte) main::i ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT *idx (byte) main::j *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte) 8 + (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte) 101 + (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@4: scope:[main] from main::@2 to:main::@return @@ -87,28 +87,28 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (byte[]) TXT ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN ← (word/signed word) 1024 + (byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from - (byte) main::j ← (byte) 0 - (byte) main::i ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT *idx (byte) main::j *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte) 8 + (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte) 101 + (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -122,28 +122,28 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (byte[]) TXT ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN ← (word/signed word) 1024 + (byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 - (byte) main::j ← (byte) 0 - (byte) main::i ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT *idx (byte) main::j *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte) 8 + (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte) 101 + (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -160,14 +160,14 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte[]) TXT#0 ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#4 ) (byte[]) TXT#2 ← phi( @1/(byte[]) TXT#4 ) - (byte) main::j#0 ← (byte) 0 - (byte) main::i#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -177,7 +177,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$1 ← (byte) main::j#1 == (byte) 8 + (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 @@ -187,14 +187,14 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 ) (byte[]) TXT#5 ← phi( main::@1/(byte[]) TXT#1 ) (byte) main::i#4 ← phi( main::@1/(byte) main::i#2 ) - (byte) main::j#2 ← (byte) 0 + (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -210,14 +210,14 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte[]) TXT#0 ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#4 ) (byte[]) TXT#2 ← phi( @1/(byte[]) TXT#4 ) - (byte) main::j#0 ← (byte) 0 - (byte) main::i#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -227,7 +227,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$1 ← (byte) main::j#1 == (byte) 8 + (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 @@ -237,14 +237,14 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 ) (byte[]) TXT#5 ← phi( main::@1/(byte[]) TXT#1 ) (byte) main::i#4 ← phi( main::@1/(byte) main::i#2 ) - (byte) main::j#2 ← (byte) 0 + (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -303,14 +303,14 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte[]) TXT#0 ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#4 ) (byte[]) TXT#2 ← phi( @1/(byte[]) TXT#4 ) - (byte) main::j#0 ← (byte) 0 - (byte) main::i#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -320,7 +320,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$1 ← (byte) main::j#1 == (byte) 8 + (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 @@ -330,14 +330,14 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 ) (byte[]) TXT#5 ← phi( main::@1/(byte[]) TXT#1 ) (byte) main::i#4 ← phi( main::@1/(byte) main::i#2 ) - (byte) main::j#2 ← (byte) 0 + (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -349,18 +349,18 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$2 ← (byte) main::j#1 != (byte) 8 from (boolean~) main::$1 ← (byte) main::j#1 == (byte) 8 +Inversing boolean not (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 from (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte[]) TXT#0 ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#4 ) (byte[]) TXT#2 ← phi( @1/(byte[]) TXT#4 ) - (byte) main::j#0 ← (byte) 0 - (byte) main::i#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -370,7 +370,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 @@ -379,14 +379,14 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 ) (byte[]) TXT#5 ← phi( main::@1/(byte[]) TXT#1 ) (byte) main::i#4 ← phi( main::@1/(byte) main::i#2 ) - (byte) main::j#2 ← (byte) 0 + (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -406,12 +406,12 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#5 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte[]) TXT#0 ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 - (byte) main::j#0 ← (byte) 0 - (byte) main::i#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -421,7 +421,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 @@ -430,11 +430,11 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::j#2 ← (byte) 0 + (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -450,12 +450,12 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte[]) TXT#0 ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 - (byte) main::j#0 ← (byte) 0 - (byte) main::i#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -465,17 +465,17 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::j#2 ← (byte) 0 + (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -490,12 +490,12 @@ Self Phi Eliminated (byte*) SCREEN#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte[]) TXT#0 ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 - (byte) main::j#0 ← (byte) 0 - (byte) main::i#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -505,17 +505,17 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::j#2 ← (byte) 0 + (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -530,12 +530,12 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte[]) TXT#0 ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 - (byte) main::j#0 ← (byte) 0 - (byte) main::i#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -543,17 +543,17 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT#0 *idx (byte) main::j#3 *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 101 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::j#2 ← (byte) 0 + (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -563,17 +563,17 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$2 if((byte) main::j#1!=(byte) 8) goto main::@2 -Simple Condition (boolean~) main::$3 if((byte) main::i#1!=(byte) 101) goto main::@1 +Simple Condition (boolean~) main::$2 if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@2 +Simple Condition (boolean~) main::$3 if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte[]) TXT#0 ← { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } to:@1 main: scope:[main] from @1 - (byte) main::j#0 ← (byte) 0 - (byte) main::i#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -581,15 +581,15 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TXT#0 *idx (byte) main::j#3 *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - if((byte) main::j#1!=(byte) 8) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 101) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::j#2 ← (byte) 0 + (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -616,12 +616,12 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - if((byte) main::j#1!=(byte) 8) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(const byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 101) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 to:main::@2 @@ -644,9 +644,9 @@ Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::j#2 Inlining constant with var siblings (const byte) main::j#2 Inlining constant with var siblings (const byte) main::j#2 -Constant inlined main::j#2 = (byte) 0 -Constant inlined main::j#0 = (byte) 0 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::j#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::j#2 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -654,17 +654,17 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) - (byte) main::j#3 ← phi( main/(byte) 0 main::@2/(byte) main::j#4 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) + (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - if((byte) main::j#1!=(byte) 8) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 - (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) 0 ) + (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte/signed byte/word/signed word) 0 ) (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 101) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 to:main::@2 @@ -681,9 +681,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte[]) TXT -(const byte[]) TXT#0 = { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } +(const byte[]) TXT#0 = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (void()) main() (byte~) main::$0 (label) main::@1 @@ -712,19 +712,19 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) - (byte) main::j#3 ← phi( main/(byte) 0 main::@5/(byte~) main::j#5 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) + (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::j#5 ) (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 (byte) main::j#1 ← ++ (byte) main::j#3 - if((byte) main::j#1!=(byte) 8) goto main::@6 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 to:main::@3 main::@3: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 - (byte) main::j#4 ← phi( main::@6/(byte~) main::j#6 main::@3/(byte) 0 ) + (byte) main::j#4 ← phi( main::@6/(byte~) main::j#6 main::@3/(byte/signed byte/word/signed word) 0 ) (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 101) goto main::@5 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@5 to:main::@return main::@return: scope:[main] from main::@2 return @@ -757,19 +757,19 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) [ main::j#3 main::i#2 ] - [2] (byte) main::j#3 ← phi( main/(byte) 0 main::@5/(byte~) main::j#5 ) [ main::j#3 main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) [ main::j#3 main::i#2 ] + [2] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::j#5 ) [ main::j#3 main::i#2 ] [3] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] - [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 main::j#1 ] + [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] to:main::@3 main::@3: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 - [7] (byte) main::j#4 ← phi( main::@6/(byte~) main::j#6 main::@3/(byte) 0 ) [ main::i#2 main::j#4 ] + [7] (byte) main::j#4 ← phi( main::@6/(byte~) main::j#6 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] - [9] if((byte) main::i#1!=(byte) 101) goto main::@5 [ main::j#4 main::i#1 ] + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@5 [ main::j#4 main::i#1 ] to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] @@ -808,17 +808,17 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::j#3 main::i#2 ] - [2] (byte) main::j#3 ← phi( main/(byte) 0 main::@2/(byte) main::j#4 ) [ main::j#3 main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::j#3 main::i#2 ] + [2] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) [ main::j#3 main::i#2 ] [3] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] - [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] + [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [7] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte) 0 ) [ main::i#2 main::j#4 ] + [7] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] - [9] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::j#4 main::i#1 ] + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] @@ -837,17 +837,17 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) - [2] (byte) main::j#3 ← phi( main/(byte) 0 main::@2/(byte) main::j#4 ) [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) + [2] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) [3] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] ( main:0 [ main::j#3 main::i#2 main::$0 ] ) [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] ( main:0 [ main::j#3 main::i#2 ] ) [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:0 [ main::i#2 main::j#1 ] ) - [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [7] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte) 0 ) [ main::i#2 main::j#4 ] ( main:0 [ main::i#2 main::j#4 ] ) + [7] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:0 [ main::i#2 main::j#4 ] ) [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) - [9] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] ( main:0 [ ] ) @@ -858,12 +858,12 @@ main::@6: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main -main::@6 dominated by @1 @begin main::@1 main::@6 main +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main +main::@6 dominated by @1 @begin main::@1 main main::@6 Found back edge: Loop head: main::@1 tails: main::@2 blocks: null Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 main::@6 @@ -928,10 +928,10 @@ main: { .label i = 3 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i - //SEG10 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG10 [2] phi (byte) main::j#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta j jmp b1 @@ -952,13 +952,13 @@ main: { sta SCREEN,x //SEG17 [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:0 [ main::i#2 main::j#1 ] ) -- zpby1=_inc_zpby1 inc j - //SEG18 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- zpby1_neq_coby1_then_la1 lda j cmp #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG20 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG20 [7] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #0 sta j jmp b2 @@ -966,7 +966,7 @@ main: { b2: //SEG22 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG23 [9] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$65 bne b1_from_b2 @@ -1022,9 +1022,9 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG10 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::j#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 jmp b1 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -1039,18 +1039,18 @@ main: { sta SCREEN,x //SEG17 [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:0 [ main::i#2 main::j#1 ] ) -- yby=_inc_yby iny - //SEG18 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 cpy #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG20 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 + //SEG20 [7] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG21 main::@2 b2: //SEG22 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [9] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1_from_b2 //SEG24 main::@return @@ -1091,9 +1091,9 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG10 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::j#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 jmp b1 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -1107,18 +1107,18 @@ main: { sta SCREEN,x //SEG17 [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:0 [ main::i#2 main::j#1 ] ) -- yby=_inc_yby iny - //SEG18 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 cpy #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG20 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 + //SEG20 [7] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG21 main::@2 b2: //SEG22 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [9] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1 //SEG24 main::@return @@ -1155,9 +1155,9 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG10 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::j#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 jmp b1 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -1171,17 +1171,17 @@ main: { sta SCREEN,x //SEG17 [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:0 [ main::i#2 main::j#1 ] ) -- yby=_inc_yby iny - //SEG18 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 cpy #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG20 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 + //SEG20 [7] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG21 main::@2 b2: //SEG22 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [9] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1 //SEG24 main::@return @@ -1213,9 +1213,9 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG10 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::j#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG12 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy @@ -1228,17 +1228,17 @@ main: { sta SCREEN,x //SEG17 [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:0 [ main::i#2 main::j#1 ] ) -- yby=_inc_yby iny - //SEG18 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 cpy #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG20 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 + //SEG20 [7] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG21 main::@2 b2: //SEG22 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [9] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1 //SEG24 main::@return @@ -1256,9 +1256,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[]) TXT -(const byte[]) TXT#0 TXT = { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } +(const byte[]) TXT#0 TXT = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (void()) main() (byte~) main::$0 reg byte a 22.0 (label) main::@1 @@ -1294,9 +1294,9 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG10 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 + //SEG10 [2] phi (byte) main::j#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG12 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy @@ -1309,17 +1309,17 @@ main: { sta SCREEN,x //SEG17 [5] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:0 [ main::i#2 main::j#1 ] ) -- yby=_inc_yby iny - //SEG18 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- yby_neq_coby1_then_la1 cpy #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG20 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 + //SEG20 [7] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG21 main::@2 b2: //SEG22 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby=_inc_xby inx - //SEG23 [9] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG23 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:0 [ main::j#4 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$65 bne b1 //SEG24 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym index 83b0ad6fb..aac88a9bb 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym @@ -2,9 +2,9 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[]) TXT -(const byte[]) TXT#0 TXT = { (byte) 3, (byte) 1, (byte) 13, (byte) 5, (byte) 12, (byte) 15, (byte) 20, (byte) 32 } +(const byte[]) TXT#0 TXT = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (void()) main() (byte~) main::$0 reg byte a 22.0 (label) main::@1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.cfg b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.cfg index fa3bfdfa4..130f10fcf 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.cfg @@ -9,16 +9,16 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [2] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) - [2] (byte) main::i#3 ← phi( main/(byte) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) + [2] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) [3] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] ( main:0 [ main::i#3 main::cursor#2 main::$0 ] ) [4] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:0 [ main::cursor#2 main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [7] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte) 0 ) [ main::cursor#2 main::i#4 ] ( main:0 [ main::cursor#2 main::i#4 ] ) + [7] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] ( main:0 [ main::cursor#2 main::i#4 ] ) [8] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) - [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) + [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log index 7d772c922..c49777147 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log @@ -15,22 +15,22 @@ void main() { Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i Adding pre/post-modifier (byte*) main::cursor ← ++ (byte*) main::cursor PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte[]) TEXT ← (string) "camelot " proc (void()) main() (byte*) main::cursor ← (byte*) SCREEN - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: (byte~) main::$0 ← (byte[]) TEXT *idx (byte) main::i *((byte*) main::cursor) ← (byte~) main::$0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i == (byte) 8 + (boolean~) main::$1 ← (byte) main::i == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@2: (byte*) main::cursor ← ++ (byte*) main::cursor - (byte*~) main::$3 ← (byte*) SCREEN + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 main::@return: @@ -55,29 +55,29 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte[]) TEXT ← (string) "camelot " to:@1 main: scope:[main] from (byte*) main::cursor ← (byte*) SCREEN - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT *idx (byte) main::i *((byte*) main::cursor) ← (byte~) main::$0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i == (byte) 8 + (boolean~) main::$1 ← (byte) main::i == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cursor ← ++ (byte*) main::cursor - (byte*~) main::$3 ← (byte*) SCREEN + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@4: scope:[main] from main::@2 to:main::@return @@ -92,29 +92,29 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte[]) TEXT ← (string) "camelot " to:@1 main: scope:[main] from (byte*) main::cursor ← (byte*) SCREEN - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT *idx (byte) main::i *((byte*) main::cursor) ← (byte~) main::$0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i == (byte) 8 + (boolean~) main::$1 ← (byte) main::i == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cursor ← ++ (byte*) main::cursor - (byte*~) main::$3 ← (byte*) SCREEN + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -128,29 +128,29 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte[]) TEXT ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte*) main::cursor ← (byte*) SCREEN - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT *idx (byte) main::i *((byte*) main::cursor) ← (byte~) main::$0 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i == (byte) 8 + (boolean~) main::$1 ← (byte) main::i == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cursor ← ++ (byte*) main::cursor - (byte*~) main::$3 ← (byte*) SCREEN + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -167,14 +167,14 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#4 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 ) (byte*) main::cursor#0 ← (byte*) SCREEN#1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 ) @@ -184,7 +184,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 == (byte) 8 + (boolean~) main::$1 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 @@ -194,7 +194,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return @@ -202,7 +202,7 @@ main::@3: scope:[main] from main::@1 (byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 ) (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#4 ) (byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#2 ) - (byte) main::i#2 ← (byte) 0 + (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -218,14 +218,14 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#4 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 ) (byte*) main::cursor#0 ← (byte*) SCREEN#1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 ) @@ -235,7 +235,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 == (byte) 8 + (boolean~) main::$1 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 @@ -245,7 +245,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return @@ -253,7 +253,7 @@ main::@3: scope:[main] from main::@1 (byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 ) (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#4 ) (byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#2 ) - (byte) main::i#2 ← (byte) 0 + (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -313,14 +313,14 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#4 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 ) (byte*) main::cursor#0 ← (byte*) SCREEN#1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 ) @@ -330,7 +330,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 == (byte) 8 + (boolean~) main::$1 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@2 to:main::@3 @@ -340,7 +340,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return @@ -348,7 +348,7 @@ main::@3: scope:[main] from main::@1 (byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 ) (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#4 ) (byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#2 ) - (byte) main::i#2 ← (byte) 0 + (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -360,18 +360,18 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$2 ← (byte) main::i#1 != (byte) 8 from (boolean~) main::$1 ← (byte) main::i#1 == (byte) 8 +Inversing boolean not (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 from (boolean~) main::$1 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte[]) TEXT#2 ← phi( @1/(byte[]) TEXT#4 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 ) (byte*) main::cursor#0 ← (byte*) SCREEN#1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 main::@2/(byte*) SCREEN#2 ) @@ -381,7 +381,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 @@ -390,7 +390,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return @@ -398,7 +398,7 @@ main::@3: scope:[main] from main::@1 (byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 ) (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#4 ) (byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#2 ) - (byte) main::i#2 ← (byte) 0 + (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -419,12 +419,12 @@ Alias (byte[]) TEXT#1 = (byte[]) TEXT#5 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte*) main::cursor#0 ← (byte*) SCREEN#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#0 main::@2/(byte*) SCREEN#2 ) @@ -434,7 +434,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 @@ -443,12 +443,12 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#4 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::i#2 ← (byte) 0 + (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -465,12 +465,12 @@ Alias (byte[]) TEXT#1 = (byte[]) TEXT#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte*) main::cursor#0 ← (byte*) SCREEN#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 main::@2/(byte*) SCREEN#2 ) @@ -480,18 +480,18 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::i#2 ← (byte) 0 + (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -507,12 +507,12 @@ Self Phi Eliminated (byte*) SCREEN#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte*) main::cursor#0 ← (byte*) SCREEN#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 ) @@ -522,18 +522,18 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::i#2 ← (byte) 0 + (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -548,12 +548,12 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte*) main::cursor#0 ← (byte*) SCREEN#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) @@ -561,18 +561,18 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT#0 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte) 8 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 if((boolean~) main::$2) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (byte*) SCREEN#0 + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 1000 (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 if((boolean~) main::$4) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::i#2 ← (byte) 0 + (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -582,17 +582,17 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$2 if((byte) main::i#1!=(byte) 8) goto main::@2 +Simple Condition (boolean~) main::$2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 Simple Condition (boolean~) main::$4 if((byte*) main::cursor#1<(byte*~) main::$3) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 (byte*) main::cursor#0 ← (byte*) SCREEN#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) @@ -600,16 +600,16 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (byte[]) TEXT#0 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - if((byte) main::i#1!=(byte) 8) goto main::@2 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (byte*) SCREEN#0 + (word) 1000 + (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 1000 if((byte*) main::cursor#1<(byte*~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte) main::i#2 ← (byte) 0 + (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -636,12 +636,12 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - if((byte) main::i#1!=(byte) 8) goto main::@2 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(const byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (const byte*) SCREEN#0 + (word) 1000 + (byte*~) main::$3 ← (const byte*) SCREEN#0 + (word/signed word) 1000 if((byte*) main::cursor#1<(byte*~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -668,7 +668,7 @@ main::@1: scope:[main] from main main::@2 (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - if((byte) main::i#1!=(byte) 8) goto main::@2 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(const byte) main::i#2 ) @@ -696,10 +696,10 @@ Inlining constant with var siblings (const byte) main::i#2 Inlining constant with var siblings (const byte) main::i#2 Inlining constant with var siblings (const byte*) main::cursor#0 Inlining constant with var siblings (const byte*) main::cursor#0 -Constant inlined main::$3 = (const byte*) SCREEN#0+(word) 1000 -Constant inlined main::i#2 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::$3 = (const byte*) SCREEN#0+(word/signed word) 1000 +Constant inlined main::i#2 = (byte/signed byte/word/signed word) 0 Constant inlined main::cursor#0 = (const byte*) SCREEN#0 -Constant inlined main::i#0 = (byte) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -708,16 +708,16 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) - (byte) main::i#3 ← phi( main/(byte) 0 main::@2/(byte) main::i#4 ) + (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#4 ) (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - if((byte) main::i#1!=(byte) 8) goto main::@2 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 - (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) 0 ) + (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte/signed byte/word/signed word) 0 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 + if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 to:main::@2 @@ -734,7 +734,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte[]) TEXT (const byte[]) TEXT#0 = (string) "camelot " (void()) main() @@ -766,18 +766,18 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@5/(byte*~) main::cursor#5 ) - (byte) main::i#3 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) + (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 *((byte*) main::cursor#2) ← (byte~) main::$0 (byte) main::i#1 ← ++ (byte) main::i#3 - if((byte) main::i#1!=(byte) 8) goto main::@6 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 to:main::@3 main::@3: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 - (byte) main::i#4 ← phi( main::@6/(byte~) main::i#6 main::@3/(byte) 0 ) + (byte) main::i#4 ← phi( main::@6/(byte~) main::i#6 main::@3/(byte/signed byte/word/signed word) 0 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@5 + if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@5 to:main::@return main::@return: scope:[main] from main::@2 return @@ -811,18 +811,18 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 [2] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@5/(byte*~) main::cursor#5 ) [ main::i#3 main::cursor#2 ] - [2] (byte) main::i#3 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) [ main::i#3 main::cursor#2 ] + [2] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) [ main::i#3 main::cursor#2 ] [3] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] [4] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] - [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 main::i#1 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] to:main::@3 main::@3: scope:[main] from main::@1 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 - [7] (byte) main::i#4 ← phi( main::@6/(byte~) main::i#6 main::@3/(byte) 0 ) [ main::cursor#2 main::i#4 ] + [7] (byte) main::i#4 ← phi( main::@6/(byte~) main::i#6 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] [8] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] - [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@5 [ main::i#4 main::cursor#1 ] + [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@5 [ main::i#4 main::cursor#1 ] to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] @@ -862,16 +862,16 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [2] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) [ main::i#3 main::cursor#2 ] - [2] (byte) main::i#3 ← phi( main/(byte) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] + [2] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] [3] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] [4] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] - [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [7] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte) 0 ) [ main::cursor#2 main::i#4 ] + [7] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] [8] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] - [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] + [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] @@ -891,16 +891,16 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [2] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) - [2] (byte) main::i#3 ← phi( main/(byte) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) + [2] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) [3] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] ( main:0 [ main::i#3 main::cursor#2 main::$0 ] ) [4] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:0 [ main::cursor#2 main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [7] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte) 0 ) [ main::cursor#2 main::i#4 ] ( main:0 [ main::cursor#2 main::i#4 ] ) + [7] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] ( main:0 [ main::cursor#2 main::i#4 ] ) [8] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) - [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) + [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 [10] return [ ] ( main:0 [ ] ) @@ -911,12 +911,12 @@ main::@6: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main -main::@6 dominated by @1 @begin main::@1 main::@6 main +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main +main::@6 dominated by @1 @begin main::@1 main main::@6 Found back edge: Loop head: main::@1 tails: main::@2 blocks: null Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 main::@6 @@ -986,7 +986,7 @@ main: { sta cursor lda #>SCREEN sta cursor+1 - //SEG10 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG10 [2] phi (byte) main::i#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -1007,13 +1007,13 @@ main: { sta (cursor),y //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:0 [ main::cursor#2 main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG18 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- zpby1_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG20 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG20 [7] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #0 sta i jmp b2 @@ -1024,7 +1024,7 @@ main: { bne !+ inc cursor+1 !: - //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b2 @@ -1049,10 +1049,10 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [4] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] -Statement [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a +Statement [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] Statement [4] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:0 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte y -Statement [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a +Statement [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_PTR_BYTE:3 [ main::cursor#2 main::cursor#1 ] : zp ZP_PTR_BYTE:3 , Potential registers zp ZP_BYTE:5 [ main::$0 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , @@ -1061,8 +1061,8 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 51.33: zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] 22: zp ZP_PTR_BYTE:3 [ main::cursor#2 main::cursor#1 ] 22: zp ZP_BYTE:5 [ main::$0 ] Uplift Scope [] -Uplifting [main] best 825 combination reg byte x [ main::i#3 main::i#4 main::i#1 ] zp ZP_PTR_BYTE:3 [ main::cursor#2 main::cursor#1 ] reg byte a [ main::$0 ] -Uplifting [] best 825 combination +Uplifting [main] best 855 combination reg byte x [ main::i#3 main::i#4 main::i#1 ] zp ZP_PTR_BYTE:3 [ main::cursor#2 main::cursor#1 ] reg byte a [ main::$0 ] +Uplifting [] best 855 combination Allocated (was zp ZP_PTR_BYTE:3) zp ZP_PTR_BYTE:2 [ main::cursor#2 main::cursor#1 ] Removing instruction jmp b1 Removing instruction jmp bend @@ -1098,7 +1098,7 @@ main: { sta cursor lda #>SCREEN sta cursor+1 - //SEG10 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -1114,12 +1114,12 @@ main: { sta (cursor),y //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:0 [ main::cursor#2 main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG20 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG20 [7] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG21 main::@2 b2: @@ -1128,7 +1128,7 @@ main: { bne !+ inc cursor+1 !: - //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b2 @@ -1182,7 +1182,7 @@ main: { sta cursor lda #>SCREEN sta cursor+1 - //SEG10 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -1197,12 +1197,12 @@ main: { sta (cursor),y //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:0 [ main::cursor#2 main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG20 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG20 [7] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG21 main::@2 b2: @@ -1211,7 +1211,7 @@ main: { bne !+ inc cursor+1 !: - //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -1260,7 +1260,7 @@ main: { sta cursor lda #>SCREEN sta cursor+1 - //SEG10 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 jmp b1 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -1275,11 +1275,11 @@ main: { sta (cursor),y //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:0 [ main::cursor#2 main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG20 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG20 [7] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG21 main::@2 b2: @@ -1288,7 +1288,7 @@ main: { bne !+ inc cursor+1 !: - //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -1332,7 +1332,7 @@ main: { sta cursor lda #>SCREEN sta cursor+1 - //SEG10 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG12 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy @@ -1346,11 +1346,11 @@ main: { sta (cursor),y //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:0 [ main::cursor#2 main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG20 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG20 [7] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG21 main::@2 b2: @@ -1359,7 +1359,7 @@ main: { bne !+ inc cursor+1 !: - //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -1383,7 +1383,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[]) TEXT (const byte[]) TEXT#0 TEXT = (string) "camelot " (void()) main() @@ -1427,7 +1427,7 @@ main: { sta cursor lda #>SCREEN sta cursor+1 - //SEG10 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG12 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy @@ -1441,11 +1441,11 @@ main: { sta (cursor),y //SEG17 [5] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:0 [ main::cursor#2 main::i#1 ] ) -- xby=_inc_xby inx - //SEG18 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 + //SEG18 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 ] ( main:0 [ main::cursor#2 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b6 //SEG19 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG20 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 + //SEG20 [7] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG21 main::@2 b2: @@ -1454,7 +1454,7 @@ main: { bne !+ inc cursor+1 !: - //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG23 [9] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:0 [ main::i#4 main::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.sym b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.sym index 4f86adefb..5264f7bd5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[]) TEXT (const byte[]) TEXT#0 TEXT = (string) "camelot " (void()) main() diff --git a/src/main/java/dk/camelot64/kickc/test/ref/iterarray.cfg b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.cfg index f99760da3..1d5cae3c5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/iterarray.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.cfg @@ -8,11 +8,11 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 5 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 5 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) [4] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1<(byte) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log index 0b15ef03f..0c14c39f4 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log @@ -8,15 +8,15 @@ void main() { } PROGRAM proc (void()) main() - (byte[16]) main::buf ← (word) 4352 - (byte) main::i ← (byte) 5 + (byte[16]) main::buf ← (word/signed word) 4352 + (byte) main::i ← (byte/signed byte/word/signed word) 5 main::@1: - (byte~) main::$0 ← (byte) 2 + (byte) main::i - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf + (byte) main::i) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) main::i + (byte) 1 + (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 (byte) main::i ← (byte~) main::$2 - (boolean~) main::$3 ← (byte) main::i < (byte) 10 + (boolean~) main::$3 ← (byte) main::i < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 main::@return: return @@ -38,16 +38,16 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[16]) main::buf ← (word) 4352 - (byte) main::i ← (byte) 5 + (byte[16]) main::buf ← (word/signed word) 4352 + (byte) main::i ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) 2 + (byte) main::i - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf + (byte) main::i) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) main::i + (byte) 1 + (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 (byte) main::i ← (byte~) main::$2 - (boolean~) main::$3 ← (byte) main::i < (byte) 10 + (boolean~) main::$3 ← (byte) main::i < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 @@ -65,16 +65,16 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[16]) main::buf ← (word) 4352 - (byte) main::i ← (byte) 5 + (byte[16]) main::buf ← (word/signed word) 4352 + (byte) main::i ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) 2 + (byte) main::i - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf + (byte) main::i) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) main::i + (byte) 1 + (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 (byte) main::i ← (byte~) main::$2 - (boolean~) main::$3 ← (byte) main::i < (byte) 10 + (boolean~) main::$3 ← (byte) main::i < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -91,16 +91,16 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf ← (word) 4352 - (byte) main::i ← (byte) 5 + (byte[16]) main::buf ← (word/signed word) 4352 + (byte) main::i ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) 2 + (byte) main::i - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf + (byte) main::i) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) main::i + (byte) 1 + (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 (byte) main::i ← (byte~) main::$2 - (boolean~) main::$3 ← (byte) main::i < (byte) 10 + (boolean~) main::$3 ← (byte) main::i < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -118,18 +118,18 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word) 4352 - (byte) main::i#0 ← (byte) 5 + (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 main::@1/(byte[16]) main::buf#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2 + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte) main::i#1 ← (byte~) main::$2 - (boolean~) main::$3 ← (byte) main::i#1 < (byte) 10 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -146,18 +146,18 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word) 4352 - (byte) main::i#0 ← (byte) 5 + (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 main::@1/(byte[16]) main::buf#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2 + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte) main::i#1 ← (byte~) main::$2 - (boolean~) main::$3 ← (byte) main::i#1 < (byte) 10 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -196,18 +196,18 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word) 4352 - (byte) main::i#0 ← (byte) 5 + (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 main::@1/(byte[16]) main::buf#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2 + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) main::i#2 + (byte) 1 + (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 (byte) main::i#1 ← (byte~) main::$2 - (boolean~) main::$3 ← (byte) main::i#1 < (byte) 10 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -224,17 +224,17 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word) 4352 - (byte) main::i#0 ← (byte) 5 + (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 main::@1/(byte[16]) main::buf#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2 + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte~) main::$1 - (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 - (boolean~) main::$3 ← (byte) main::i#1 < (byte) 10 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -251,17 +251,17 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word) 4352 - (byte) main::i#0 ← (byte) 5 + (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[16]) main::buf#1 ← phi( main/(byte[16]) main::buf#0 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2 + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf#1 + (byte) main::i#2) ← (byte~) main::$1 - (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 - (boolean~) main::$3 ← (byte) main::i#1 < (byte) 10 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -278,16 +278,16 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word) 4352 - (byte) main::i#0 ← (byte) 5 + (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2 + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 - (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 - (boolean~) main::$3 ← (byte) main::i#1 < (byte) 10 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -298,22 +298,22 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$3 if((byte) main::i#1<(byte) 10) goto main::@1 +Simple Condition (boolean~) main::$3 if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word) 4352 - (byte) main::i#0 ← (byte) 5 + (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 5 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2 + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 - (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 - if((byte) main::i#1<(byte) 10) goto main::@1 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -333,11 +333,11 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 2 + (byte) main::i#2 - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 2 + (byte) main::i#2 + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2 *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 - (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 - if((byte) main::i#1<(byte) 10) goto main::@1 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -360,10 +360,10 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 - (byte~) main::$1 ← (byte~) main::$0 + (byte) 2+(byte) 2 + (byte~) main::$1 ← (byte~) main::$0 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 - (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 - if((byte) main::i#1<(byte) 10) goto main::@1 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -384,10 +384,10 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 - (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 - if((byte) main::i#1<(byte) 10) goto main::@1 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -405,7 +405,7 @@ Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Constant inlined main::i#0 = (byte) 5 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 5 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -413,11 +413,11 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte) main::i#2 ← phi( main/(byte) 5 main::@1/(byte) main::i#1 ) - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 5 main::@1/(byte) main::i#1 ) + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 - (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 - if((byte) main::i#1<(byte) 10) goto main::@1 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -436,7 +436,7 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte[16]) main::buf -(const byte[16]) main::buf#0 = (word) 4352 +(const byte[16]) main::buf#0 = (word/signed word) 4352 (byte) main::i (byte) main::i#1 (byte) main::i#2 @@ -454,11 +454,11 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::i#2 ← phi( main/(byte) 5 main::@3/(byte~) main::i#3 ) - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 5 main::@3/(byte~) main::i#3 ) + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 - (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 - if((byte) main::i#1<(byte) 10) goto main::@3 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@3 to:main::@return main::@return: scope:[main] from main::@1 return @@ -484,11 +484,11 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@3 - [2] (byte) main::i#2 ← phi( main/(byte) 5 main::@3/(byte~) main::i#3 ) [ main::i#2 ] - [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 5 main::@3/(byte~) main::i#3 ) [ main::i#2 ] + [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] [4] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] - [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] - [6] if((byte) main::i#1<(byte) 10) goto main::@3 [ main::i#1 ] + [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] + [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@3 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] @@ -516,11 +516,11 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 5 main::@1/(byte) main::i#1 ) [ main::i#2 ] - [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 5 main::@1/(byte) main::i#1 ) [ main::i#2 ] + [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] [4] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] - [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] - [6] if((byte) main::i#1<(byte) 10) goto main::@1 [ main::i#1 ] + [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] + [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] @@ -537,11 +537,11 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 5 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 5 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) [4] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1<(byte) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] ( main:0 [ ] ) @@ -550,10 +550,10 @@ main::@return: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@return dominated by @1 main::@return @begin main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main Found back edge: Loop head: main::@1 tails: main::@1 blocks: null Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 @@ -608,7 +608,7 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 5 [phi:main->main::@1#0] -- zpby1=coby1 lda #5 sta i jmp b1 @@ -618,7 +618,7 @@ main: { jmp b1 //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- zpby1=zpby2_plus_coby1 + //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- zpby1=zpby2_plus_coby1 lda i clc adc #2+2 @@ -627,9 +627,9 @@ main: { lda _1 ldx i sta buf,x - //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=zpby1_plus_1 + //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=zpby1_plus_1 inc i - //SEG16 [6] if((byte) main::i#1<(byte) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_lt_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_lt_coby1_then_la1 lda i cmp #$a bcc b1_from_b1 @@ -641,9 +641,9 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) always clobbers reg byte a +Statement [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$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 ] -Statement [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) always clobbers reg byte a +Statement [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) 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::$1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , @@ -679,7 +679,7 @@ main: { .const buf = $1100 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -687,15 +687,15 @@ main: { //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 + //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 txa clc adc #2+2 //SEG14 [4] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta buf,x - //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 + //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 inx - //SEG16 [6] if((byte) main::i#1<(byte) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b1_from_b1 //SEG17 main::@return @@ -728,22 +728,22 @@ main: { .const buf = $1100 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 + //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 txa clc adc #2+2 //SEG14 [4] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta buf,x - //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 + //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 inx - //SEG16 [6] if((byte) main::i#1<(byte) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b1 //SEG17 main::@return @@ -773,22 +773,22 @@ ASSEMBLER main: { .const buf = $1100 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 + //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 txa clc adc #2+2 //SEG14 [4] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta buf,x - //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 + //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 inx - //SEG16 [6] if((byte) main::i#1<(byte) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b1 //SEG17 main::@return @@ -814,21 +814,21 @@ ASSEMBLER main: { .const buf = $1100 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 + //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 txa clc adc #2+2 //SEG14 [4] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta buf,x - //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 + //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 inx - //SEG16 [6] if((byte) main::i#1<(byte) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b1 //SEG17 main::@return @@ -845,7 +845,7 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte[16]) main::buf -(const byte[16]) main::buf#0 buf = (word) 4352 +(const byte[16]) main::buf#0 buf = (word/signed word) 4352 (byte) main::i (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 14.666666666666666 @@ -869,21 +869,21 @@ FINAL CODE main: { .const buf = $1100 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 + //SEG13 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=xby_plus_coby1 txa clc adc #2+2 //SEG14 [4] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta buf,x - //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 + //SEG15 [5] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=xby_plus_1 inx - //SEG16 [6] if((byte) main::i#1<(byte) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 + //SEG16 [6] if((byte) main::i#1<(byte/signed byte/word/signed word) 10) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b1 //SEG17 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/iterarray.sym b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.sym index 5097ae7d6..0c7b678ab 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/iterarray.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.sym @@ -6,7 +6,7 @@ (label) main::@1 (label) main::@return (byte[16]) main::buf -(const byte[16]) main::buf#0 buf = (word) 4352 +(const byte[16]) main::buf#0 buf = (word/signed word) 4352 (byte) main::i (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 14.666666666666666 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/literals.cfg b/src/main/java/dk/camelot64/kickc/test/ref/literals.cfg index 7f677215c..986ec21d1 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/literals.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/literals.cfg @@ -5,17 +5,17 @@ to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) - [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) + [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) + [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [3] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) - [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [6] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) - [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [9] if((byte) main::i#1!=(byte) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [10] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/literals.log b/src/main/java/dk/camelot64/kickc/test/ref/literals.log index 01febb9b2..8d7f5c816 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/literals.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/literals.log @@ -14,26 +14,26 @@ void main() { } } PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte) char ← (byte) 'a' - (byte) num ← (byte) 1 + (byte) num ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (string~) $1 ← (string~) $0 + (byte) 'e' (byte[]) str ← (string~) $1 - (byte[]) nums ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } proc (void()) main() - *((byte*) SCREEN + (byte) 0) ← (byte) char - *((byte*) SCREEN + (byte) 2) ← (byte) num - (byte) main::i ← (byte) 0 + *((byte*) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte) char + *((byte*) SCREEN + (byte/signed byte/word/signed word) 2) ← (byte) num + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (byte~) main::$0 ← (byte) 4 + (byte) main::i + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i (byte~) main::$1 ← (byte[]) str *idx (byte) main::i *((byte*) SCREEN + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i (byte~) main::$3 ← (byte[]) nums *idx (byte) main::i *((byte*) SCREEN + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$4 ← (byte) main::i != (byte) 4 + (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 main::@return: return @@ -60,28 +60,28 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte) char ← (byte) 'a' - (byte) num ← (byte) 1 + (byte) num ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (string~) $1 ← (string~) $0 + (byte) 'e' (byte[]) str ← (string~) $1 - (byte[]) nums ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from - *((byte*) SCREEN + (byte) 0) ← (byte) char - *((byte*) SCREEN + (byte) 2) ← (byte) num - (byte) main::i ← (byte) 0 + *((byte*) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte) char + *((byte*) SCREEN + (byte/signed byte/word/signed word) 2) ← (byte) num + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) 4 + (byte) main::i + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i (byte~) main::$1 ← (byte[]) str *idx (byte) main::i *((byte*) SCREEN + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i (byte~) main::$3 ← (byte[]) nums *idx (byte) main::i *((byte*) SCREEN + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$4 ← (byte) main::i != (byte) 4 + (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 @@ -97,28 +97,28 @@ main::@return: scope:[main] from main::@2 Removing empty block main::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte) char ← (byte) 'a' - (byte) num ← (byte) 1 + (byte) num ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (string~) $1 ← (string~) $0 + (byte) 'e' (byte[]) str ← (string~) $1 - (byte[]) nums ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from - *((byte*) SCREEN + (byte) 0) ← (byte) char - *((byte*) SCREEN + (byte) 2) ← (byte) num - (byte) main::i ← (byte) 0 + *((byte*) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte) char + *((byte*) SCREEN + (byte/signed byte/word/signed word) 2) ← (byte) num + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) 4 + (byte) main::i + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i (byte~) main::$1 ← (byte[]) str *idx (byte) main::i *((byte*) SCREEN + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i (byte~) main::$3 ← (byte[]) nums *idx (byte) main::i *((byte*) SCREEN + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$4 ← (byte) main::i != (byte) 4 + (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -133,28 +133,28 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte) char ← (byte) 'a' - (byte) num ← (byte) 1 + (byte) num ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (string~) $1 ← (string~) $0 + (byte) 'e' (byte[]) str ← (string~) $1 - (byte[]) nums ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from @1 - *((byte*) SCREEN + (byte) 0) ← (byte) char - *((byte*) SCREEN + (byte) 2) ← (byte) num - (byte) main::i ← (byte) 0 + *((byte*) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte) char + *((byte*) SCREEN + (byte/signed byte/word/signed word) 2) ← (byte) num + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) 4 + (byte) main::i + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i (byte~) main::$1 ← (byte[]) str *idx (byte) main::i *((byte*) SCREEN + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i (byte~) main::$3 ← (byte[]) nums *idx (byte) main::i *((byte*) SCREEN + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$4 ← (byte) main::i != (byte) 4 + (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -172,13 +172,13 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte) char#0 ← (byte) 'a' - (byte) num#0 ← (byte) 1 + (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (string~) $1 ← (string~) $0 + (byte) 'e' (byte[]) str#0 ← (string~) $1 - (byte[]) nums#0 ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from @1 (byte[]) nums#2 ← phi( @1/(byte[]) nums#3 ) @@ -186,23 +186,23 @@ main: scope:[main] from @1 (byte) num#1 ← phi( @1/(byte) num#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 ) (byte) char#1 ← phi( @1/(byte) char#2 ) - *((byte*) SCREEN#1 + (byte) 0) ← (byte) char#1 - *((byte*) SCREEN#1 + (byte) 2) ← (byte) num#1 - (byte) main::i#0 ← (byte) 0 + *((byte*) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte) char#1 + *((byte*) SCREEN#1 + (byte/signed byte/word/signed word) 2) ← (byte) num#1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[]) nums#1 ← phi( main/(byte[]) nums#2 main::@1/(byte[]) nums#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 ) (byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 4 + (byte) main::i#2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i#2 + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte) 4 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -222,13 +222,13 @@ main::@return: scope:[main] from main::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte) char#0 ← (byte) 'a' - (byte) num#0 ← (byte) 1 + (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (string~) $1 ← (string~) $0 + (byte) 'e' (byte[]) str#0 ← (string~) $1 - (byte[]) nums#0 ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from @1 (byte[]) nums#2 ← phi( @1/(byte[]) nums#3 ) @@ -236,23 +236,23 @@ main: scope:[main] from @1 (byte) num#1 ← phi( @1/(byte) num#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 ) (byte) char#1 ← phi( @1/(byte) char#2 ) - *((byte*) SCREEN#1 + (byte) 0) ← (byte) char#1 - *((byte*) SCREEN#1 + (byte) 2) ← (byte) num#1 - (byte) main::i#0 ← (byte) 0 + *((byte*) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte) char#1 + *((byte*) SCREEN#1 + (byte/signed byte/word/signed word) 2) ← (byte) num#1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[]) nums#1 ← phi( main/(byte[]) nums#2 main::@1/(byte[]) nums#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 ) (byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 4 + (byte) main::i#2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i#2 + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte) 4 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -317,13 +317,13 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte) char#0 ← (byte) 'a' - (byte) num#0 ← (byte) 1 + (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (string~) $1 ← (string~) $0 + (byte) 'e' (byte[]) str#0 ← (string~) $1 - (byte[]) nums#0 ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from @1 (byte[]) nums#2 ← phi( @1/(byte[]) nums#3 ) @@ -331,23 +331,23 @@ main: scope:[main] from @1 (byte) num#1 ← phi( @1/(byte) num#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#3 ) (byte) char#1 ← phi( @1/(byte) char#2 ) - *((byte*) SCREEN#1 + (byte) 0) ← (byte) char#1 - *((byte*) SCREEN#1 + (byte) 2) ← (byte) num#1 - (byte) main::i#0 ← (byte) 0 + *((byte*) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte) char#1 + *((byte*) SCREEN#1 + (byte/signed byte/word/signed word) 2) ← (byte) num#1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[]) nums#1 ← phi( main/(byte[]) nums#2 main::@1/(byte[]) nums#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 ) (byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 4 + (byte) main::i#2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i#2 + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte) 4 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -371,31 +371,31 @@ Alias (byte[]) nums#0 = (byte[]) nums#2 (byte[]) nums#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte) char#0 ← (byte) 'a' - (byte) num#0 ← (byte) 1 + (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (byte[]) str#0 ← (string~) $0 + (byte) 'e' - (byte[]) nums#0 ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from @1 - *((byte*) SCREEN#0 + (byte) 0) ← (byte) char#0 - *((byte*) SCREEN#0 + (byte) 2) ← (byte) num#0 - (byte) main::i#0 ← (byte) 0 + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte) char#0 + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word) 2) ← (byte) num#0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[]) nums#1 ← phi( main/(byte[]) nums#0 main::@1/(byte[]) nums#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 main::@1/(byte*) SCREEN#2 ) (byte[]) str#1 ← phi( main/(byte[]) str#0 main::@1/(byte[]) str#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 4 + (byte) main::i#2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i#2 + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte) 4 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -412,31 +412,31 @@ Self Phi Eliminated (byte[]) nums#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte) char#0 ← (byte) 'a' - (byte) num#0 ← (byte) 1 + (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (byte[]) str#0 ← (string~) $0 + (byte) 'e' - (byte[]) nums#0 ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from @1 - *((byte*) SCREEN#0 + (byte) 0) ← (byte) char#0 - *((byte*) SCREEN#0 + (byte) 2) ← (byte) num#0 - (byte) main::i#0 ← (byte) 0 + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte) char#0 + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word) 2) ← (byte) num#0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte[]) nums#1 ← phi( main/(byte[]) nums#0 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 ) (byte[]) str#1 ← phi( main/(byte[]) str#0 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 4 + (byte) main::i#2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i#2 + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte) 4 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -453,28 +453,28 @@ Redundant Phi (byte[]) nums#1 (byte[]) nums#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte) char#0 ← (byte) 'a' - (byte) num#0 ← (byte) 1 + (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (byte[]) str#0 ← (string~) $0 + (byte) 'e' - (byte[]) nums#0 ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from @1 - *((byte*) SCREEN#0 + (byte) 0) ← (byte) char#0 - *((byte*) SCREEN#0 + (byte) 2) ← (byte) num#0 - (byte) main::i#0 ← (byte) 0 + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte) char#0 + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word) 2) ← (byte) num#0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 4 + (byte) main::i#2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 (byte~) main::$1 ← (byte[]) str#0 *idx (byte) main::i#2 *((byte*) SCREEN#0 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i#2 + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 (byte~) main::$3 ← (byte[]) nums#0 *idx (byte) main::i#2 *((byte*) SCREEN#0 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte) 4 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 if((boolean~) main::$4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -485,32 +485,32 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$4 if((byte) main::i#1!=(byte) 4) goto main::@1 +Simple Condition (boolean~) main::$4 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte) char#0 ← (byte) 'a' - (byte) num#0 ← (byte) 1 + (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" (byte[]) str#0 ← (string~) $0 + (byte) 'e' - (byte[]) nums#0 ← { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } + (byte[]) nums#0 ← { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } to:@1 main: scope:[main] from @1 - *((byte*) SCREEN#0 + (byte) 0) ← (byte) char#0 - *((byte*) SCREEN#0 + (byte) 2) ← (byte) num#0 - (byte) main::i#0 ← (byte) 0 + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte) char#0 + *((byte*) SCREEN#0 + (byte/signed byte/word/signed word) 2) ← (byte) num#0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 4 + (byte) main::i#2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 (byte~) main::$1 ← (byte[]) str#0 *idx (byte) main::i#2 *((byte*) SCREEN#0 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i#2 + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 (byte~) main::$3 ← (byte[]) nums#0 *idx (byte) main::i#2 *((byte*) SCREEN#0 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 4) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -532,19 +532,19 @@ CONTROL FLOW GRAPH (byte[]) str#0 ← (const string) $0 + (byte) 'e' to:@1 main: scope:[main] from @1 - *((const byte*) SCREEN#0 + (byte) 0) ← (const byte) char#0 - *((const byte*) SCREEN#0 + (byte) 2) ← (const byte) num#0 + *((const byte*) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (const byte) char#0 + *((const byte*) SCREEN#0 + (byte/signed byte/word/signed word) 2) ← (const byte) num#0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 4 + (byte) main::i#2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 (byte~) main::$1 ← (byte[]) str#0 *idx (byte) main::i#2 *((const byte*) SCREEN#0 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i#2 + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 *((const byte*) SCREEN#0 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 4) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -560,19 +560,19 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - *((const byte*) SCREEN#0 + (byte) 0) ← (const byte) char#0 - *((const byte*) SCREEN#0 + (byte) 2) ← (const byte) num#0 + *((const byte*) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (const byte) char#0 + *((const byte*) SCREEN#0 + (byte/signed byte/word/signed word) 2) ← (const byte) num#0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) 4 + (byte) main::i#2 + (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 *((const byte*) SCREEN#0 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) 9 + (byte) main::i#2 + (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 *((const byte*) SCREEN#0 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 4) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -595,19 +595,19 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 - *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte) 4 + (byte~) main::$0) ← (byte~) main::$1 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte~) main::$0) ← (byte~) main::$1 (byte~) main::$2 ← (byte) main::i#2 (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte) 9 + (byte~) main::$2) ← (byte~) main::$3 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte~) main::$2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 4) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -625,17 +625,17 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 - *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 4) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -656,23 +656,23 @@ Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Constant inlined $0 = (string) "bc"+(string) "d" -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 - *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 4) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -687,7 +687,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte) char (const byte) char#0 = (byte) 'a' (void()) main() @@ -699,9 +699,9 @@ FINAL SYMBOL TABLE (byte) main::i#1 (byte) main::i#2 (byte) num -(const byte) num#0 = (byte) 1 +(const byte) num#0 = (byte/signed byte/word/signed word) 1 (byte[]) nums -(const byte[]) nums#0 = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } +(const byte[]) nums#0 = { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } (byte[]) str (const byte[]) str#0 = (string) "bc"+(string) "d"+(byte) 'e' @@ -716,17 +716,17 @@ CONTROL FLOW GRAPH - PHI LIFTED to:@end @end: scope:[] from @1 main: scope:[main] from @1 - *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 - *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::i#2 ← phi( main/(byte) 0 main::@3/(byte~) main::i#3 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 4) goto main::@3 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@3 to:main::@return main::@return: scope:[main] from main::@1 return @@ -748,17 +748,17 @@ CONTROL FLOW GRAPH - LIVE RANGES FOUND to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] - [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] + [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] + [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] to:main::@1 main::@1: scope:[main] from main main::@3 - [3] (byte) main::i#2 ← phi( main/(byte) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] + [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] [6] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] - [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [9] if((byte) main::i#1!=(byte) 4) goto main::@3 [ main::i#1 ] + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@3 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [10] return [ ] @@ -782,17 +782,17 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] - [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] + [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] + [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] to:main::@1 main::@1: scope:[main] from main main::@1 - [3] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] + [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] [6] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] - [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [9] if((byte) main::i#1!=(byte) 4) goto main::@1 [ main::i#1 ] + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [10] return [ ] @@ -806,17 +806,17 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) - [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) + [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) + [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [3] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) - [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [6] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) - [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [9] if((byte) main::i#1!=(byte) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [10] return [ ] ( main:0 [ ] ) @@ -825,10 +825,10 @@ main::@return: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@return dominated by @1 main::@return @begin main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main Found back edge: Loop head: main::@1 tails: main::@1 blocks: null Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 @@ -892,15 +892,15 @@ main: { .label _1 = 3 .label _3 = 4 .label i = 2 - //SEG7 [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #char sta SCREEN+0 - //SEG8 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #num sta SCREEN+2 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -914,7 +914,7 @@ main: { ldx i lda str,x sta _1 - //SEG15 [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG15 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _1 ldx i sta SCREEN+4,x @@ -922,13 +922,13 @@ main: { ldx i lda nums,x sta _3 - //SEG17 [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _3 ldx i sta SCREEN+9,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG19 [9] if((byte) main::i#1!=(byte) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #4 bne b1_from_b1 @@ -940,8 +940,8 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::$1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ main::$3 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , @@ -978,15 +978,15 @@ b1: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #char sta SCREEN+0 - //SEG8 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #num sta SCREEN+2 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -996,15 +996,15 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda str,x - //SEG15 [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG15 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+4,x //SEG16 [6] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- aby=cowo1_derefidx_xby lda nums,x - //SEG17 [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+9,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1!=(byte) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #4 bne b1_from_b1 //SEG20 main::@return @@ -1037,15 +1037,15 @@ b1: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #char sta SCREEN+0 - //SEG8 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #num sta SCREEN+2 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -1054,15 +1054,15 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda str,x - //SEG15 [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG15 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+4,x //SEG16 [6] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- aby=cowo1_derefidx_xby lda nums,x - //SEG17 [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+9,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1!=(byte) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #4 bne b1 //SEG20 main::@return @@ -1094,14 +1094,14 @@ ASSEMBLER //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #char sta SCREEN+0 - //SEG8 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #num sta SCREEN+2 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -1110,15 +1110,15 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda str,x - //SEG15 [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG15 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+4,x //SEG16 [6] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- aby=cowo1_derefidx_xby lda nums,x - //SEG17 [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+9,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1!=(byte) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #4 bne b1 //SEG20 main::@return @@ -1146,14 +1146,14 @@ ASSEMBLER //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #char sta SCREEN+0 - //SEG8 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #num sta SCREEN+2 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG12 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -1161,15 +1161,15 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda str,x - //SEG15 [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG15 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+4,x //SEG16 [6] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- aby=cowo1_derefidx_xby lda nums,x - //SEG17 [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+9,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1!=(byte) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #4 bne b1 //SEG20 main::@return @@ -1182,7 +1182,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) char (const byte) char#0 char = (byte) 'a' (void()) main() @@ -1194,9 +1194,9 @@ FINAL SYMBOL TABLE (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 13.2 (byte) num -(const byte) num#0 num = (byte) 1 +(const byte) num#0 num = (byte/signed byte/word/signed word) 1 (byte[]) nums -(const byte[]) nums#0 nums = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } +(const byte[]) nums#0 nums = { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } (byte[]) str (const byte[]) str#0 str = (string) "bc"+(string) "d"+(byte) 'e' @@ -1222,14 +1222,14 @@ FINAL CODE //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0+(byte) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #char sta SCREEN+0 - //SEG8 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG8 [2] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #num sta SCREEN+2 //SEG9 [3] phi from main to main::@1 [phi:main->main::@1] - //SEG10 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG10 [3] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG11 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG12 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy @@ -1237,15 +1237,15 @@ main: { b1: //SEG14 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:0 [ main::i#2 main::$1 ] ) -- aby=cowo1_derefidx_xby lda str,x - //SEG15 [5] *((const byte*) SCREEN#0+(byte) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG15 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+4,x //SEG16 [6] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- aby=cowo1_derefidx_xby lda nums,x - //SEG17 [7] *((const byte*) SCREEN#0+(byte) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG17 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN+9,x //SEG18 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [9] if((byte) main::i#1!=(byte) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #4 bne b1 //SEG20 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/literals.sym b/src/main/java/dk/camelot64/kickc/test/ref/literals.sym index 069a6d53e..7c6e1f891 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/literals.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/literals.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) char (const byte) char#0 char = (byte) 'a' (void()) main() @@ -14,9 +14,9 @@ (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 13.2 (byte) num -(const byte) num#0 num = (byte) 1 +(const byte) num#0 num = (byte/signed byte/word/signed word) 1 (byte[]) nums -(const byte[]) nums#0 nums = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 } +(const byte[]) nums#0 nums = { (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5 } (byte[]) str (const byte[]) str#0 str = (string) "bc"+(string) "d"+(byte) 'e' diff --git a/src/main/java/dk/camelot64/kickc/test/ref/liverange.cfg b/src/main/java/dk/camelot64/kickc/test/ref/liverange.cfg index fe0558a26..5ea814f3d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/liverange.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/liverange.cfg @@ -10,7 +10,7 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [3] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:0 [ main::$0 inci::$0 ] ) - [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) + [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) [5] call inci param-assignment [ inci::return#0 main::a#1 ] ( main:0 [ inci::return#0 main::a#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 @@ -21,8 +21,8 @@ main::@return: scope:[main] from main::@2 [8] return [ ] ( main:0 [ ] ) to:@return inci: scope:[inci] from main main::@1 - [9] (byte) i#10 ← phi( main/(byte) 0 main::@1/(byte~) inci::$0 ) [ i#10 ] ( main:0::inci:2 [ i#10 ] main:0::inci:5 [ main::a#1 i#10 ] ) - [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) + [9] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) inci::$0 ) [ i#10 ] ( main:0::inci:2 [ i#10 ] main:0::inci:5 [ main::a#1 i#10 ] ) + [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) [11] (byte) inci::return#0 ← (byte~) inci::$0 [ inci::return#0 inci::$0 ] ( main:0::inci:2 [ inci::return#0 inci::$0 ] main:0::inci:5 [ main::a#1 inci::return#0 inci::$0 ] ) to:inci::@return inci::@return: scope:[inci] from inci diff --git a/src/main/java/dk/camelot64/kickc/test/ref/liverange.log b/src/main/java/dk/camelot64/kickc/test/ref/liverange.log index b31ecb3ab..7bedbf091 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/liverange.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/liverange.log @@ -11,9 +11,9 @@ byte inci() { return i; } PROGRAM - (byte) i ← (byte) 0 + (byte) i ← (byte/signed byte/word/signed word) 0 proc (void()) main() - (byte) main::a ← (byte) 4 + (byte) main::a ← (byte/signed byte/word/signed word) 4 (byte~) main::$0 ← call inci (byte~) main::$1 ← (byte) main::a + (byte~) main::$0 (byte) main::a ← (byte~) main::$1 @@ -24,7 +24,7 @@ main::@return: return endproc // main() proc (byte()) inci() - (byte~) inci::$0 ← (byte) i + (byte) 7 + (byte~) inci::$0 ← (byte) i + (byte/signed byte/word/signed word) 7 (byte) i ← (byte~) inci::$0 (byte) inci::return ← (byte) i goto inci::@return @@ -50,10 +50,10 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte) i ← (byte) 0 + (byte) i ← (byte/signed byte/word/signed word) 0 to:@1 main: scope:[main] from - (byte) main::a ← (byte) 4 + (byte) main::a ← (byte/signed byte/word/signed word) 4 (byte~) main::$0 ← call inci (byte~) main::$1 ← (byte) main::a + (byte~) main::$0 (byte) main::a ← (byte~) main::$1 @@ -67,7 +67,7 @@ main::@return: scope:[main] from main @1: scope:[] from @begin to:@2 inci: scope:[inci] from - (byte~) inci::$0 ← (byte) i + (byte) 7 + (byte~) inci::$0 ← (byte) i + (byte/signed byte/word/signed word) 7 (byte) i ← (byte~) inci::$0 (byte) inci::return ← (byte) i to:inci::@return @@ -86,10 +86,10 @@ Removing empty block @1 Removing empty block inci::@1 CONTROL FLOW GRAPH @begin: scope:[] from - (byte) i ← (byte) 0 + (byte) i ← (byte/signed byte/word/signed word) 0 to:@2 main: scope:[main] from - (byte) main::a ← (byte) 4 + (byte) main::a ← (byte/signed byte/word/signed word) 4 (byte~) main::$0 ← call inci (byte~) main::$1 ← (byte) main::a + (byte~) main::$0 (byte) main::a ← (byte~) main::$1 @@ -101,7 +101,7 @@ main::@return: scope:[main] from main return to:@return inci: scope:[inci] from - (byte~) inci::$0 ← (byte) i + (byte) 7 + (byte~) inci::$0 ← (byte) i + (byte/signed byte/word/signed word) 7 (byte) i ← (byte~) inci::$0 (byte) inci::return ← (byte) i to:inci::@return @@ -120,10 +120,10 @@ inci modifies i CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte) i ← (byte) 0 + (byte) i ← (byte/signed byte/word/signed word) 0 to:@2 main: scope:[main] from @2 - (byte) main::a ← (byte) 4 + (byte) main::a ← (byte/signed byte/word/signed word) 4 (byte) inci::return ← call inci param-assignment to:main::@1 main::@1: scope:[main] from main @@ -144,7 +144,7 @@ main::@return: scope:[main] from main::@2 return to:@return inci: scope:[inci] from main main::@1 - (byte~) inci::$0 ← (byte) i + (byte) 7 + (byte~) inci::$0 ← (byte) i + (byte/signed byte/word/signed word) 7 (byte) i ← (byte~) inci::$0 (byte) inci::return ← (byte) i to:inci::@return @@ -165,11 +165,11 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte) i#0 ← (byte) 0 + (byte) i#0 ← (byte/signed byte/word/signed word) 0 to:@2 main: scope:[main] from @2 (byte) i#13 ← phi( @2/(byte) i#14 ) - (byte) main::a#0 ← (byte) 4 + (byte) main::a#0 ← (byte/signed byte/word/signed word) 4 (byte) inci::return#0 ← call inci param-assignment to:main::@1 main::@1: scope:[main] from main @@ -198,7 +198,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) 7 + (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 (byte) i#4 ← (byte~) inci::$0 (byte) inci::return#2 ← (byte) i#4 to:inci::@return @@ -221,11 +221,11 @@ inci::@return: scope:[inci] from inci CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte) i#0 ← (byte) 0 + (byte) i#0 ← (byte/signed byte/word/signed word) 0 to:@2 main: scope:[main] from @2 (byte) i#13 ← phi( @2/(byte) i#14 ) - (byte) main::a#0 ← (byte) 4 + (byte) main::a#0 ← (byte/signed byte/word/signed word) 4 call inci param-assignment (byte) inci::return#0 ← (byte) inci::return#3 to:main::@1 @@ -256,7 +256,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) 7 + (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 (byte) i#4 ← (byte~) inci::$0 (byte) inci::return#2 ← (byte) i#4 to:inci::@return @@ -337,10 +337,10 @@ Alias (byte) main::a#2 = (byte~) main::$3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte) i#0 ← (byte) 0 + (byte) i#0 ← (byte/signed byte/word/signed word) 0 to:@2 main: scope:[main] from @2 - (byte) main::a#0 ← (byte) 4 + (byte) main::a#0 ← (byte/signed byte/word/signed word) 4 call inci param-assignment to:main::@1 main::@1: scope:[main] from main @@ -357,7 +357,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#1 ) - (byte~) inci::$0 ← (byte) i#10 + (byte) 7 + (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 (byte) i#1 ← (byte~) inci::$0 (byte) inci::return#0 ← (byte) i#1 to:inci::@return @@ -398,7 +398,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#1 ) - (byte~) inci::$0 ← (byte) i#10 + (byte) 7 + (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 (byte) i#1 ← (byte~) inci::$0 (byte) inci::return#0 ← (byte) i#1 to:inci::@return @@ -434,7 +434,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#1 ) - (byte~) inci::$0 ← (byte) i#10 + (byte) 7 + (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 (byte) i#1 ← (byte~) inci::$0 (byte) inci::return#0 ← (byte) i#1 to:inci::@return @@ -458,8 +458,8 @@ Inlining constant with var siblings (const byte) main::a#0 Inlining constant with var siblings (const byte) main::a#0 Inlining constant with var siblings (const byte) i#0 Inlining constant with var siblings (const byte) i#0 -Constant inlined main::a#0 = (byte) 4 -Constant inlined i#0 = (byte) 0 +Constant inlined main::a#0 = (byte/signed byte/word/signed word) 4 +Constant inlined i#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -469,7 +469,7 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main (byte~) main::$0 ← (byte) inci::return#0 - (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 + (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 call inci param-assignment to:main::@2 main::@2: scope:[main] from main::@1 @@ -480,8 +480,8 @@ main::@return: scope:[main] from main::@2 return to:@return inci: scope:[inci] from main main::@1 - (byte) i#10 ← phi( main/(byte) 0 main::@1/(byte) i#1 ) - (byte~) inci::$0 ← (byte) i#10 + (byte) 7 + (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) i#1 ) + (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 (byte) i#1 ← (byte~) inci::$0 (byte) inci::return#0 ← (byte) i#1 to:inci::@return @@ -529,7 +529,7 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main (byte~) main::$0 ← (byte) inci::return#0 - (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 + (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 (byte~) i#15 ← (byte) i#1 call inci param-assignment to:main::@2 @@ -541,8 +541,8 @@ main::@return: scope:[main] from main::@2 return to:@return inci: scope:[inci] from main main::@1 - (byte) i#10 ← phi( main/(byte) 0 main::@1/(byte~) i#15 ) - (byte~) inci::$0 ← (byte) i#10 + (byte) 7 + (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#1 ← (byte~) inci::$0 (byte) inci::return#0 ← (byte) i#1 to:inci::@return @@ -573,7 +573,7 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [3] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 i#1 ] - [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 i#1 ] + [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 i#1 ] [5] (byte~) i#15 ← (byte) i#1 [ main::a#1 i#15 ] [6] call inci param-assignment [ inci::return#0 main::a#1 ] to:main::@2 @@ -585,8 +585,8 @@ main::@return: scope:[main] from main::@2 [9] return [ ] to:@return inci: scope:[inci] from main main::@1 - [10] (byte) i#10 ← phi( main/(byte) 0 main::@1/(byte~) i#15 ) [ i#10 ] - [11] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] + [10] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) i#15 ) [ i#10 ] + [11] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] [12] (byte) i#1 ← (byte~) inci::$0 [ i#1 ] [13] (byte) inci::return#0 ← (byte) i#1 [ inci::return#0 i#1 ] to:inci::@return @@ -618,7 +618,7 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [3] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] - [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] + [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] [5] call inci param-assignment [ inci::return#0 main::a#1 ] to:main::@2 main::@2: scope:[main] from main::@1 @@ -629,8 +629,8 @@ main::@return: scope:[main] from main::@2 [8] return [ ] to:@return inci: scope:[inci] from main main::@1 - [9] (byte) i#10 ← phi( main/(byte) 0 main::@1/(byte~) inci::$0 ) [ i#10 ] - [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] + [9] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) inci::$0 ) [ i#10 ] + [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] [11] (byte) inci::return#0 ← (byte~) inci::$0 [ inci::return#0 inci::$0 ] to:inci::@return inci::@return: scope:[inci] from inci @@ -650,7 +650,7 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [3] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:0 [ main::$0 inci::$0 ] ) - [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) + [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) [5] call inci param-assignment [ inci::return#0 main::a#1 ] ( main:0 [ inci::return#0 main::a#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 @@ -661,8 +661,8 @@ main::@return: scope:[main] from main::@2 [8] return [ ] ( main:0 [ ] ) to:@return inci: scope:[inci] from main main::@1 - [9] (byte) i#10 ← phi( main/(byte) 0 main::@1/(byte~) inci::$0 ) [ i#10 ] ( main:0::inci:2 [ i#10 ] main:0::inci:5 [ main::a#1 i#10 ] ) - [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) + [9] (byte) i#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) inci::$0 ) [ i#10 ] ( main:0::inci:2 [ i#10 ] main:0::inci:5 [ main::a#1 i#10 ] ) + [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) [11] (byte) inci::return#0 ← (byte~) inci::$0 [ inci::return#0 inci::$0 ] ( main:0::inci:2 [ inci::return#0 inci::$0 ] main:0::inci:5 [ main::a#1 inci::return#0 inci::$0 ] ) to:inci::@return inci::@return: scope:[inci] from inci @@ -672,13 +672,13 @@ inci::@return: scope:[inci] from inci DOMINATORS @begin dominated by @begin @2 dominated by @2 @begin -@end dominated by @2 @end @begin +@end dominated by @2 @begin @end main dominated by @2 @begin main main::@1 dominated by @2 @begin main::@1 main -main::@2 dominated by @2 @begin main::@2 main::@1 main -main::@return dominated by @2 main::@return @begin main::@2 main::@1 main -inci dominated by @2 inci @begin main -inci::@return dominated by @2 inci @begin inci::@return main +main::@2 dominated by @2 @begin main::@1 main::@2 main +main::@return dominated by main::@return @2 @begin main::@1 main::@2 main +inci dominated by @2 @begin main inci +inci::@return dominated by inci::@return @2 @begin main inci NATURAL LOOPS @@ -750,7 +750,7 @@ main: { //SEG8 [2] call inci param-assignment [ inci::return#0 inci::$0 ] ( main:0 [ inci::return#0 inci::$0 ] ) //SEG9 [9] phi from main to inci [phi:main->inci] inci_from_main: - //SEG10 [9] phi (byte) i#10 = (byte) 0 [phi:main->inci#0] -- zpby1=coby1 + //SEG10 [9] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- zpby1=coby1 lda #0 sta i jsr inci @@ -760,7 +760,7 @@ main: { //SEG12 [3] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:0 [ main::$0 inci::$0 ] ) -- zpby1=zpby2 lda inci.return sta _0 - //SEG13 [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_zpby2 + //SEG13 [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_zpby2 lda _0 clc adc #4 @@ -791,7 +791,7 @@ main: { inci: { .label _0 = 2 .label return = 7 - //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- zpby1=zpby1_plus_coby1 + //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- zpby1=zpby1_plus_coby1 lda _0 clc adc #7 @@ -807,13 +807,13 @@ inci: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) always clobbers reg byte a +Statement [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ 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 [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) always clobbers reg byte a +Statement [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::a#1 ] -Statement [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) always clobbers reg byte a +Statement [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) always clobbers reg byte a Statement [7] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 [ ] ( main:0 [ ] ) always clobbers reg byte a -Statement [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) always clobbers reg byte a +Statement [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ 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 , Potential registers zp ZP_BYTE:3 [ main::$0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ main::a#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -861,14 +861,14 @@ main: { //SEG8 [2] call inci param-assignment [ inci::return#0 inci::$0 ] ( main:0 [ inci::return#0 inci::$0 ] ) //SEG9 [9] phi from main to inci [phi:main->inci] inci_from_main: - //SEG10 [9] phi (byte) i#10 = (byte) 0 [phi:main->inci#0] -- xby=coby1 + //SEG10 [9] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- xby=coby1 ldx #0 jsr inci //SEG11 main::@1 b1: //SEG12 [3] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:0 [ main::$0 inci::$0 ] ) // (byte~) main::$0 = (byte) inci::return#0 // register copy reg byte a - //SEG13 [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_aby + //SEG13 [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_aby clc adc #4 sta a @@ -891,7 +891,7 @@ main: { } //SEG22 inci inci: { - //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- xby=xby_plus_coby1 + //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- xby=xby_plus_coby1 txa clc adc #7 @@ -927,14 +927,14 @@ main: { //SEG8 [2] call inci param-assignment [ inci::return#0 inci::$0 ] ( main:0 [ inci::return#0 inci::$0 ] ) //SEG9 [9] phi from main to inci [phi:main->inci] inci_from_main: - //SEG10 [9] phi (byte) i#10 = (byte) 0 [phi:main->inci#0] -- xby=coby1 + //SEG10 [9] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- xby=coby1 ldx #0 jsr inci //SEG11 main::@1 b1: //SEG12 [3] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:0 [ main::$0 inci::$0 ] ) // (byte~) main::$0 = (byte) inci::return#0 // register copy reg byte a - //SEG13 [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_aby + //SEG13 [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_aby clc adc #4 sta a @@ -957,7 +957,7 @@ main: { } //SEG22 inci inci: { - //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- xby=xby_plus_coby1 + //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- xby=xby_plus_coby1 txa clc adc #7 @@ -996,13 +996,13 @@ main: { .label a = 2 //SEG8 [2] call inci param-assignment [ inci::return#0 inci::$0 ] ( main:0 [ inci::return#0 inci::$0 ] ) //SEG9 [9] phi from main to inci [phi:main->inci] - //SEG10 [9] phi (byte) i#10 = (byte) 0 [phi:main->inci#0] -- xby=coby1 + //SEG10 [9] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- xby=coby1 ldx #0 jsr inci //SEG11 main::@1 //SEG12 [3] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:0 [ main::$0 inci::$0 ] ) // (byte~) main::$0 = (byte) inci::return#0 // register copy reg byte a - //SEG13 [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_aby + //SEG13 [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_aby clc adc #4 sta a @@ -1022,7 +1022,7 @@ main: { } //SEG22 inci inci: { - //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- xby=xby_plus_coby1 + //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- xby=xby_plus_coby1 txa clc adc #7 @@ -1079,13 +1079,13 @@ main: { .label a = 2 //SEG8 [2] call inci param-assignment [ inci::return#0 inci::$0 ] ( main:0 [ inci::return#0 inci::$0 ] ) //SEG9 [9] phi from main to inci [phi:main->inci] - //SEG10 [9] phi (byte) i#10 = (byte) 0 [phi:main->inci#0] -- xby=coby1 + //SEG10 [9] phi (byte) i#10 = (byte/signed byte/word/signed word) 0 [phi:main->inci#0] -- xby=coby1 ldx #0 jsr inci //SEG11 main::@1 //SEG12 [3] (byte~) main::$0 ← (byte) inci::return#0 [ main::$0 inci::$0 ] ( main:0 [ main::$0 inci::$0 ] ) // (byte~) main::$0 = (byte) inci::return#0 // register copy reg byte a - //SEG13 [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_aby + //SEG13 [4] (byte) main::a#1 ← (byte/signed byte/word/signed word) 4 + (byte~) main::$0 [ main::a#1 inci::$0 ] ( main:0 [ main::a#1 inci::$0 ] ) -- zpby1=coby1_plus_aby clc adc #4 sta a @@ -1105,7 +1105,7 @@ main: { } //SEG22 inci inci: { - //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- xby=xby_plus_coby1 + //SEG23 [10] (byte~) inci::$0 ← (byte) i#10 + (byte/signed byte/word/signed word) 7 [ inci::$0 ] ( main:0::inci:2 [ inci::$0 ] main:0::inci:5 [ main::a#1 inci::$0 ] ) -- xby=xby_plus_coby1 txa clc adc #7 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopmin.cfg b/src/main/java/dk/camelot64/kickc/test/ref/loopmin.cfg index 39052d1f6..9583f2d18 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopmin.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopmin.cfg @@ -8,9 +8,9 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::s#2 ← phi( main/(byte) 0 main::@2/(byte) main::s#4 ) [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) - [2] (byte) main::i#2 ← phi( main/(byte) 10 main::@2/(byte) main::i#1 ) [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) - [3] if((byte) main::i#2<=(byte) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) + [2] (byte) main::s#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::s#4 ) [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 10 main::@2/(byte) main::i#1 ) [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) + [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:0 [ main::i#2 main::s#1 ] ) @@ -18,7 +18,7 @@ main::@3: scope:[main] from main::@1 main::@2: scope:[main] from main::@1 main::@3 [5] (byte) main::s#4 ← phi( main::@1/(byte) main::s#2 main::@3/(byte) main::s#1 ) [ main::i#2 main::s#4 ] ( main:0 [ main::i#2 main::s#4 ] ) [6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) - [7] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) + [7] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) to:main::@return main::@return: scope:[main] from main::@2 [8] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopmin.log b/src/main/java/dk/camelot64/kickc/test/ref/loopmin.log index 641f36098..b84b62b69 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopmin.log @@ -11,17 +11,17 @@ void main() { Adding pre/post-modifier (byte) main::i ← -- (byte) main::i PROGRAM proc (void()) main() - (byte) main::i ← (byte) 10 - (byte) main::s ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 10 + (byte) main::s ← (byte/signed byte/word/signed word) 0 main::@1: - (boolean~) main::$0 ← (byte) main::i > (byte) 5 + (boolean~) main::$0 ← (byte) main::i > (byte/signed byte/word/signed word) 5 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 (byte~) main::$2 ← (byte) main::s + (byte) main::i (byte) main::s ← (byte~) main::$2 main::@2: (byte) main::i ← -- (byte) main::i - (boolean~) main::$3 ← (byte) main::i > (byte) 0 + (boolean~) main::$3 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 main::@return: return @@ -44,17 +44,17 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte) main::i ← (byte) 10 - (byte) main::s ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 10 + (byte) main::s ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$0 ← (byte) main::i > (byte) 5 + (boolean~) main::$0 ← (byte) main::i > (byte/signed byte/word/signed word) 5 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← -- (byte) main::i - (boolean~) main::$3 ← (byte) main::i > (byte) 0 + (boolean~) main::$3 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 @@ -76,17 +76,17 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte) main::i ← (byte) 10 - (byte) main::s ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 10 + (byte) main::s ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$0 ← (byte) main::i > (byte) 5 + (boolean~) main::$0 ← (byte) main::i > (byte/signed byte/word/signed word) 5 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← -- (byte) main::i - (boolean~) main::$3 ← (byte) main::i > (byte) 0 + (boolean~) main::$3 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -107,17 +107,17 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i ← (byte) 10 - (byte) main::s ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 10 + (byte) main::s ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$0 ← (byte) main::i > (byte) 5 + (boolean~) main::$0 ← (byte) main::i > (byte/signed byte/word/signed word) 5 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← -- (byte) main::i - (boolean~) main::$3 ← (byte) main::i > (byte) 0 + (boolean~) main::$3 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -141,13 +141,13 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 10 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 10 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::s#3 ← phi( main/(byte) main::s#0 main::@2/(byte) main::s#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 > (byte) 5 + (boolean~) main::$0 ← (byte) main::i#2 > (byte/signed byte/word/signed word) 5 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 @@ -155,7 +155,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::s#4 ← phi( main::@1/(byte) main::s#3 main::@3/(byte) main::s#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← -- (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$3 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -178,13 +178,13 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 10 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 10 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::s#3 ← phi( main/(byte) main::s#0 main::@2/(byte) main::s#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 > (byte) 5 + (boolean~) main::$0 ← (byte) main::i#2 > (byte/signed byte/word/signed word) 5 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 @@ -192,7 +192,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::s#4 ← phi( main::@1/(byte) main::s#3 main::@3/(byte) main::s#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← -- (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$3 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -244,13 +244,13 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 10 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 10 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::s#3 ← phi( main/(byte) main::s#0 main::@2/(byte) main::s#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 > (byte) 5 + (boolean~) main::$0 ← (byte) main::i#2 > (byte/signed byte/word/signed word) 5 (boolean~) main::$1 ← ! (boolean~) main::$0 if((boolean~) main::$1) goto main::@2 to:main::@3 @@ -258,7 +258,7 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::s#4 ← phi( main::@1/(byte) main::s#3 main::@3/(byte) main::s#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← -- (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$3 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -275,26 +275,26 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$1 ← (byte) main::i#2 <= (byte) 5 from (boolean~) main::$0 ← (byte) main::i#2 > (byte) 5 +Inversing boolean not (boolean~) main::$1 ← (byte) main::i#2 <= (byte/signed byte/word/signed word) 5 from (boolean~) main::$0 ← (byte) main::i#2 > (byte/signed byte/word/signed word) 5 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 10 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 10 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::s#3 ← phi( main/(byte) main::s#0 main::@2/(byte) main::s#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#2 <= (byte) 5 + (boolean~) main::$1 ← (byte) main::i#2 <= (byte/signed byte/word/signed word) 5 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::s#4 ← phi( main::@1/(byte) main::s#3 main::@3/(byte) main::s#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← -- (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$3 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -319,20 +319,20 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 10 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 10 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::s#2 ← phi( main/(byte) main::s#0 main::@2/(byte) main::s#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#2 <= (byte) 5 + (boolean~) main::$1 ← (byte) main::i#2 <= (byte/signed byte/word/signed word) 5 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::s#4 ← phi( main::@1/(byte) main::s#2 main::@3/(byte) main::s#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#2 ) (byte) main::i#1 ← -- (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$3 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -352,19 +352,19 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 10 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 10 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::s#2 ← phi( main/(byte) main::s#0 main::@2/(byte) main::s#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#2 <= (byte) 5 + (boolean~) main::$1 ← (byte) main::i#2 <= (byte/signed byte/word/signed word) 5 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::s#4 ← phi( main::@1/(byte) main::s#2 main::@3/(byte) main::s#1 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$3 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 @@ -378,25 +378,25 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$1 if((byte) main::i#2<=(byte) 5) goto main::@2 -Simple Condition (boolean~) main::$3 if((byte) main::i#1>(byte) 0) goto main::@1 +Simple Condition (boolean~) main::$1 if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 +Simple Condition (boolean~) main::$3 if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 10 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 10 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::s#2 ← phi( main/(byte) main::s#0 main::@2/(byte) main::s#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - if((byte) main::i#2<=(byte) 5) goto main::@2 + if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::s#4 ← phi( main::@1/(byte) main::s#2 main::@3/(byte) main::s#1 ) (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 @@ -420,12 +420,12 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte) main::s#2 ← phi( main/(const byte) main::s#0 main::@2/(byte) main::s#4 ) (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@2/(byte) main::i#1 ) - if((byte) main::i#2<=(byte) 5) goto main::@2 + if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::s#4 ← phi( main::@1/(byte) main::s#2 main::@3/(byte) main::s#1 ) (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 @@ -443,8 +443,8 @@ Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::s#0 Inlining constant with var siblings (const byte) main::s#0 Inlining constant with var siblings (const byte) main::s#0 -Constant inlined main::s#0 = (byte) 0 -Constant inlined main::i#0 = (byte) 10 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 10 +Constant inlined main::s#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -452,14 +452,14 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::s#2 ← phi( main/(byte) 0 main::@2/(byte) main::s#4 ) - (byte) main::i#2 ← phi( main/(byte) 10 main::@2/(byte) main::i#1 ) - if((byte) main::i#2<=(byte) 5) goto main::@2 + (byte) main::s#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::s#4 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 10 main::@2/(byte) main::i#1 ) + if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::s#4 ← phi( main::@1/(byte) main::s#2 main::@3/(byte) main::s#1 ) (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 @@ -503,9 +503,9 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::s#2 ← phi( main/(byte) 0 main::@5/(byte~) main::s#5 ) - (byte) main::i#2 ← phi( main/(byte) 10 main::@5/(byte~) main::i#5 ) - if((byte) main::i#2<=(byte) 5) goto main::@6 + (byte) main::s#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::s#5 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 10 main::@5/(byte~) main::i#5 ) + if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@6 to:main::@3 main::@3: scope:[main] from main::@1 (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 @@ -514,7 +514,7 @@ main::@3: scope:[main] from main::@1 main::@2: scope:[main] from main::@3 main::@6 (byte) main::s#4 ← phi( main::@6/(byte~) main::s#6 main::@3/(byte~) main::s#7 ) (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@5 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@5 to:main::@return main::@return: scope:[main] from main::@2 return @@ -547,9 +547,9 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::s#2 ← phi( main/(byte) 0 main::@5/(byte~) main::s#5 ) [ main::i#2 main::s#2 ] - [2] (byte) main::i#2 ← phi( main/(byte) 10 main::@5/(byte~) main::i#5 ) [ main::i#2 main::s#2 ] - [3] if((byte) main::i#2<=(byte) 5) goto main::@6 [ main::i#2 main::s#2 ] + [2] (byte) main::s#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::s#5 ) [ main::i#2 main::s#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 10 main::@5/(byte~) main::i#5 ) [ main::i#2 main::s#2 ] + [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@6 [ main::i#2 main::s#2 ] to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] @@ -558,7 +558,7 @@ main::@3: scope:[main] from main::@1 main::@2: scope:[main] from main::@3 main::@6 [6] (byte) main::s#4 ← phi( main::@6/(byte~) main::s#6 main::@3/(byte~) main::s#7 ) [ main::i#2 main::s#4 ] [7] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#4 main::i#1 ] - [8] if((byte) main::i#1>(byte) 0) goto main::@5 [ main::s#4 main::i#1 ] + [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@5 [ main::s#4 main::i#1 ] to:main::@return main::@return: scope:[main] from main::@2 [9] return [ ] @@ -595,9 +595,9 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::s#2 ← phi( main/(byte) 0 main::@2/(byte) main::s#4 ) [ main::i#2 main::s#2 ] - [2] (byte) main::i#2 ← phi( main/(byte) 10 main::@2/(byte) main::i#1 ) [ main::i#2 main::s#2 ] - [3] if((byte) main::i#2<=(byte) 5) goto main::@2 [ main::i#2 main::s#2 ] + [2] (byte) main::s#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::s#4 ) [ main::i#2 main::s#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 10 main::@2/(byte) main::i#1 ) [ main::i#2 main::s#2 ] + [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 [ main::i#2 main::s#2 ] to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] @@ -605,7 +605,7 @@ main::@3: scope:[main] from main::@1 main::@2: scope:[main] from main::@1 main::@3 [5] (byte) main::s#4 ← phi( main::@1/(byte) main::s#2 main::@3/(byte) main::s#1 ) [ main::i#2 main::s#4 ] [6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#4 ] - [7] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 main::s#4 ] + [7] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 main::s#4 ] to:main::@return main::@return: scope:[main] from main::@2 [8] return [ ] @@ -622,9 +622,9 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::s#2 ← phi( main/(byte) 0 main::@2/(byte) main::s#4 ) [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) - [2] (byte) main::i#2 ← phi( main/(byte) 10 main::@2/(byte) main::i#1 ) [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) - [3] if((byte) main::i#2<=(byte) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) + [2] (byte) main::s#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::s#4 ) [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 10 main::@2/(byte) main::i#1 ) [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) + [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:0 [ main::i#2 main::s#1 ] ) @@ -632,7 +632,7 @@ main::@3: scope:[main] from main::@1 main::@2: scope:[main] from main::@1 main::@3 [5] (byte) main::s#4 ← phi( main::@1/(byte) main::s#2 main::@3/(byte) main::s#1 ) [ main::i#2 main::s#4 ] ( main:0 [ main::i#2 main::s#4 ] ) [6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) - [7] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) + [7] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) to:main::@return main::@return: scope:[main] from main::@2 [8] return [ ] ( main:0 [ ] ) @@ -641,12 +641,12 @@ main::@return: scope:[main] from main::@2 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@3 dominated by @1 @begin main::@1 main::@3 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main +main::@3 dominated by @1 @begin main::@1 main main::@3 +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main Found back edge: Loop head: main::@1 tails: main::@2 blocks: null Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 main::@3 @@ -702,10 +702,10 @@ main: { .label s = 3 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::s#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::s#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta s - //SEG10 [2] phi (byte) main::i#2 = (byte) 10 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 10 [phi:main->main::@1#1] -- zpby1=coby1 lda #$a sta i jmp b1 @@ -716,7 +716,7 @@ main: { jmp b1 //SEG14 main::@1 b1: - //SEG15 [3] if((byte) main::i#2<=(byte) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- zpby1_le_coby1_then_la1 + //SEG15 [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- zpby1_le_coby1_then_la1 lda i cmp #5 bcc b2_from_b1 @@ -738,7 +738,7 @@ main: { b2: //SEG21 [6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- zpby1=_dec_zpby1 dec i - //SEG22 [7] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- zpby1_gt_0_then_la1 + //SEG22 [7] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- zpby1_gt_0_then_la1 lda i bne b1_from_b2 jmp breturn @@ -756,8 +756,8 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 49.5: zp ZP_BYTE:3 [ main::s#2 main::s#4 main::s#1 ] 27.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 450 combination reg byte a [ main::s#2 main::s#4 main::s#1 ] reg byte x [ main::i#2 main::i#1 ] -Uplifting [] best 450 combination +Uplifting [main] best 470 combination reg byte a [ main::s#2 main::s#4 main::s#1 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [] best 470 combination Removing instruction jmp b1 Removing instruction jmp bend Removing instruction jmp b1 @@ -785,9 +785,9 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::s#2 = (byte) 0 [phi:main->main::@1#0] -- aby=coby1 + //SEG9 [2] phi (byte) main::s#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- aby=coby1 lda #0 - //SEG10 [2] phi (byte) main::i#2 = (byte) 10 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 10 [phi:main->main::@1#1] -- xby=coby1 ldx #$a jmp b1 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -796,7 +796,7 @@ main: { //SEG13 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG14 main::@1 b1: - //SEG15 [3] if((byte) main::i#2<=(byte) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 + //SEG15 [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 cpx #5 bcc b2_from_b1 beq b2_from_b1 @@ -814,7 +814,7 @@ main: { b2: //SEG21 [6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby=_dec_xby dex - //SEG22 [7] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 + //SEG22 [7] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1_from_b2 //SEG23 main::@return @@ -850,9 +850,9 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::s#2 = (byte) 0 [phi:main->main::@1#0] -- aby=coby1 + //SEG9 [2] phi (byte) main::s#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- aby=coby1 lda #0 - //SEG10 [2] phi (byte) main::i#2 = (byte) 10 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 10 [phi:main->main::@1#1] -- xby=coby1 ldx #$a jmp b1 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -860,7 +860,7 @@ main: { //SEG13 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG14 main::@1 b1: - //SEG15 [3] if((byte) main::i#2<=(byte) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 + //SEG15 [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 cpx #5 bcc b2 beq b2 @@ -876,7 +876,7 @@ main: { b2: //SEG21 [6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby=_dec_xby dex - //SEG22 [7] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 + //SEG22 [7] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG23 main::@return @@ -906,9 +906,9 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::s#2 = (byte) 0 [phi:main->main::@1#0] -- aby=coby1 + //SEG9 [2] phi (byte) main::s#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- aby=coby1 lda #0 - //SEG10 [2] phi (byte) main::i#2 = (byte) 10 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 10 [phi:main->main::@1#1] -- xby=coby1 ldx #$a jmp b1 //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -916,7 +916,7 @@ main: { //SEG13 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG14 main::@1 b1: - //SEG15 [3] if((byte) main::i#2<=(byte) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 + //SEG15 [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 cpx #5 bcc b2 beq b2 @@ -931,7 +931,7 @@ main: { b2: //SEG21 [6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby=_dec_xby dex - //SEG22 [7] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 + //SEG22 [7] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG23 main::@return @@ -956,16 +956,16 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::s#2 = (byte) 0 [phi:main->main::@1#0] -- aby=coby1 + //SEG9 [2] phi (byte) main::s#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- aby=coby1 lda #0 - //SEG10 [2] phi (byte) main::i#2 = (byte) 10 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 10 [phi:main->main::@1#1] -- xby=coby1 ldx #$a //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG12 [2] phi (byte) main::s#2 = (byte) main::s#4 [phi:main::@2->main::@1#0] -- register_copy //SEG13 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG14 main::@1 b1: - //SEG15 [3] if((byte) main::i#2<=(byte) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 + //SEG15 [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 cpx #5 bcc b2 beq b2 @@ -980,7 +980,7 @@ main: { b2: //SEG21 [6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby=_dec_xby dex - //SEG22 [7] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 + //SEG22 [7] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG23 main::@return @@ -1023,16 +1023,16 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::s#2 = (byte) 0 [phi:main->main::@1#0] -- aby=coby1 + //SEG9 [2] phi (byte) main::s#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- aby=coby1 lda #0 - //SEG10 [2] phi (byte) main::i#2 = (byte) 10 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 10 [phi:main->main::@1#1] -- xby=coby1 ldx #$a //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG12 [2] phi (byte) main::s#2 = (byte) main::s#4 [phi:main::@2->main::@1#0] -- register_copy //SEG13 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG14 main::@1 b1: - //SEG15 [3] if((byte) main::i#2<=(byte) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 + //SEG15 [3] if((byte) main::i#2<=(byte/signed byte/word/signed word) 5) goto main::@2 [ main::i#2 main::s#2 ] ( main:0 [ main::i#2 main::s#2 ] ) -- xby_le_coby1_then_la1 cpx #5 bcc b2 beq b2 @@ -1047,7 +1047,7 @@ main: { b2: //SEG21 [6] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby=_dec_xby dex - //SEG22 [7] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 + //SEG22 [7] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 main::s#4 ] ( main:0 [ main::i#1 main::s#4 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG23 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopnest.cfg b/src/main/java/dk/camelot64/kickc/test/ref/loopnest.cfg index ba02b5053..e0d6586a7 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest.cfg @@ -8,12 +8,12 @@ main: scope:[main] from @2 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@3 - [2] (byte) main::i#2 ← phi( main/(byte) 100 main::@3/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@3/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] call nest param-assignment [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [5] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@3 [6] return [ ] ( main:0 [ ] ) @@ -22,10 +22,10 @@ nest: scope:[nest] from main::@1 [7] phi() [ ] ( main:0::nest:3 [ main::i#2 ] ) to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 - [8] (byte) nest::j#2 ← phi( nest/(byte) 100 nest::@1/(byte) nest::j#1 ) [ nest::j#2 ] ( main:0::nest:3 [ main::i#2 nest::j#2 ] ) + [8] (byte) nest::j#2 ← phi( nest/(byte/signed byte/word/signed word) 100 nest::@1/(byte) nest::j#1 ) [ nest::j#2 ] ( main:0::nest:3 [ main::i#2 nest::j#2 ] ) [9] *((const byte*) SCREEN#0) ← (byte) nest::j#2 [ nest::j#2 ] ( main:0::nest:3 [ main::i#2 nest::j#2 ] ) [10] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) - [11] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) + [11] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) to:nest::@return nest::@return: scope:[nest] from nest::@1 [12] return [ ] ( main:0::nest:3 [ main::i#2 ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log b/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log index f082fd4de..05b14cacc 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log @@ -17,23 +17,23 @@ void nest() { Adding pre/post-modifier (byte) main::i ← -- (byte) main::i Adding pre/post-modifier (byte) nest::j ← -- (byte) nest::j PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() - (byte) main::i ← (byte) 100 + (byte) main::i ← (byte/signed byte/word/signed word) 100 main::@1: (void~) main::$0 ← call nest (byte) main::i ← -- (byte) main::i - (boolean~) main::$1 ← (byte) main::i > (byte) 0 + (boolean~) main::$1 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 main::@return: return endproc // main() proc (void()) nest() - (byte) nest::j ← (byte) 100 + (byte) nest::j ← (byte/signed byte/word/signed word) 100 nest::@1: *((byte*) SCREEN) ← (byte) nest::j (byte) nest::j ← -- (byte) nest::j - (boolean~) nest::$0 ← (byte) nest::j > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 nest::@return: return @@ -56,15 +56,15 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 100 + (byte) main::i ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@1 (void~) main::$0 ← call nest (byte) main::i ← -- (byte) main::i - (boolean~) main::$1 ← (byte) main::i > (byte) 0 + (boolean~) main::$1 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 @@ -75,12 +75,12 @@ main::@return: scope:[main] from main::@2 @1: scope:[] from @begin to:@2 nest: scope:[nest] from - (byte) nest::j ← (byte) 100 + (byte) nest::j ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 *((byte*) SCREEN) ← (byte) nest::j (byte) nest::j ← -- (byte) nest::j - (boolean~) nest::$0 ← (byte) nest::j > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 to:nest::@2 nest::@2: scope:[nest] from nest::@1 @@ -98,27 +98,27 @@ Removing empty block @1 Removing empty block nest::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@2 main: scope:[main] from - (byte) main::i ← (byte) 100 + (byte) main::i ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@1 (void~) main::$0 ← call nest (byte) main::i ← -- (byte) main::i - (boolean~) main::$1 ← (byte) main::i > (byte) 0 + (boolean~) main::$1 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return to:@return nest: scope:[nest] from - (byte) nest::j ← (byte) 100 + (byte) nest::j ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 *((byte*) SCREEN) ← (byte) nest::j (byte) nest::j ← -- (byte) nest::j - (boolean~) nest::$0 ← (byte) nest::j > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 @@ -133,29 +133,29 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i ← (byte) 100 + (byte) main::i ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 call nest param-assignment to:main::@3 main::@3: scope:[main] from main::@1 (byte) main::i ← -- (byte) main::i - (boolean~) main::$1 ← (byte) main::i > (byte) 0 + (boolean~) main::$1 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest: scope:[nest] from main::@1 - (byte) nest::j ← (byte) 100 + (byte) nest::j ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 *((byte*) SCREEN) ← (byte) nest::j (byte) nest::j ← -- (byte) nest::j - (boolean~) nest::$0 ← (byte) nest::j > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 @@ -175,11 +175,11 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 ) - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) @@ -190,7 +190,7 @@ main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#3 ) (byte) main::i#2 ← phi( main::@1/(byte) main::i#3 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 @@ -198,14 +198,14 @@ main::@return: scope:[main] from main::@3 to:@return nest: scope:[nest] from main::@1 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#3 ) - (byte) nest::j#0 ← (byte) 100 + (byte) nest::j#0 ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 (byte*) SCREEN#1 ← phi( nest/(byte*) SCREEN#2 nest::@1/(byte*) SCREEN#1 ) (byte) nest::j#2 ← phi( nest/(byte) nest::j#0 nest::@1/(byte) nest::j#1 ) *((byte*) SCREEN#1) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - (boolean~) nest::$0 ← (byte) nest::j#1 > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 @@ -221,11 +221,11 @@ nest::@return: scope:[nest] from nest::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 ) - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) @@ -236,7 +236,7 @@ main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#3 ) (byte) main::i#2 ← phi( main::@1/(byte) main::i#3 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 @@ -244,14 +244,14 @@ main::@return: scope:[main] from main::@3 to:@return nest: scope:[nest] from main::@1 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#3 ) - (byte) nest::j#0 ← (byte) 100 + (byte) nest::j#0 ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 (byte*) SCREEN#1 ← phi( nest/(byte*) SCREEN#2 nest::@1/(byte*) SCREEN#1 ) (byte) nest::j#2 ← phi( nest/(byte) nest::j#0 nest::@1/(byte) nest::j#1 ) *((byte*) SCREEN#1) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - (boolean~) nest::$0 ← (byte) nest::j#1 > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 @@ -301,11 +301,11 @@ Culled Empty Block (label) @3 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 ) - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) @@ -316,7 +316,7 @@ main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#3 ) (byte) main::i#2 ← phi( main::@1/(byte) main::i#3 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 @@ -324,14 +324,14 @@ main::@return: scope:[main] from main::@3 to:@return nest: scope:[nest] from main::@1 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#3 ) - (byte) nest::j#0 ← (byte) 100 + (byte) nest::j#0 ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 (byte*) SCREEN#1 ← phi( nest/(byte*) SCREEN#2 nest::@1/(byte*) SCREEN#1 ) (byte) nest::j#2 ← phi( nest/(byte) nest::j#0 nest::@1/(byte) nest::j#1 ) *((byte*) SCREEN#1) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - (boolean~) nest::$0 ← (byte) nest::j#1 > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 @@ -349,10 +349,10 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#5 (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 main::@3/(byte*) SCREEN#2 ) @@ -361,21 +361,21 @@ main::@1: scope:[main] from main main::@3 to:main::@3 main::@3: scope:[main] from main::@1 (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest: scope:[nest] from main::@1 - (byte) nest::j#0 ← (byte) 100 + (byte) nest::j#0 ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 (byte*) SCREEN#1 ← phi( nest/(byte*) SCREEN#2 nest::@1/(byte*) SCREEN#1 ) (byte) nest::j#2 ← phi( nest/(byte) nest::j#0 nest::@1/(byte) nest::j#1 ) *((byte*) SCREEN#1) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - (boolean~) nest::$0 ← (byte) nest::j#1 > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 @@ -391,10 +391,10 @@ Self Phi Eliminated (byte*) SCREEN#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 ) @@ -403,21 +403,21 @@ main::@1: scope:[main] from main main::@3 to:main::@3 main::@3: scope:[main] from main::@1 (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest: scope:[nest] from main::@1 - (byte) nest::j#0 ← (byte) 100 + (byte) nest::j#0 ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 (byte*) SCREEN#1 ← phi( nest/(byte*) SCREEN#2 ) (byte) nest::j#2 ← phi( nest/(byte) nest::j#0 nest::@1/(byte) nest::j#1 ) *((byte*) SCREEN#1) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - (boolean~) nest::$0 ← (byte) nest::j#1 > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 @@ -433,10 +433,10 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) @@ -444,20 +444,20 @@ main::@1: scope:[main] from main main::@3 to:main::@3 main::@3: scope:[main] from main::@1 (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest: scope:[nest] from main::@1 - (byte) nest::j#0 ← (byte) 100 + (byte) nest::j#0 ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 (byte) nest::j#2 ← phi( nest/(byte) nest::j#0 nest::@1/(byte) nest::j#1 ) *((byte*) SCREEN#0) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - (boolean~) nest::$0 ← (byte) nest::j#1 > (byte) 0 + (boolean~) nest::$0 ← (byte) nest::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest::$0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 @@ -468,15 +468,15 @@ nest::@return: scope:[nest] from nest::@1 to:@end @end: scope:[] from @2 -Simple Condition (boolean~) main::$1 if((byte) main::i#1>(byte) 0) goto main::@1 -Simple Condition (boolean~) nest::$0 if((byte) nest::j#1>(byte) 0) goto nest::@1 +Simple Condition (boolean~) main::$1 if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 +Simple Condition (boolean~) nest::$0 if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) @@ -484,19 +484,19 @@ main::@1: scope:[main] from main main::@3 to:main::@3 main::@3: scope:[main] from main::@1 (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest: scope:[nest] from main::@1 - (byte) nest::j#0 ← (byte) 100 + (byte) nest::j#0 ← (byte/signed byte/word/signed word) 100 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 (byte) nest::j#2 ← phi( nest/(byte) nest::j#0 nest::@1/(byte) nest::j#1 ) *((byte*) SCREEN#0) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - if((byte) nest::j#1>(byte) 0) goto nest::@1 + if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 return @@ -521,7 +521,7 @@ main::@1: scope:[main] from main main::@3 to:main::@3 main::@3: scope:[main] from main::@1 (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -532,7 +532,7 @@ nest::@1: scope:[nest] from nest nest::@1 (byte) nest::j#2 ← phi( nest/(const byte) nest::j#0 nest::@1/(byte) nest::j#1 ) *((const byte*) SCREEN#0) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - if((byte) nest::j#1>(byte) 0) goto nest::@1 + if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 return @@ -546,8 +546,8 @@ Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) nest::j#0 Inlining constant with var siblings (const byte) nest::j#0 -Constant inlined main::i#0 = (byte) 100 -Constant inlined nest::j#0 = (byte) 100 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 100 +Constant inlined nest::j#0 = (byte/signed byte/word/signed word) 100 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -555,12 +555,12 @@ CONTROL FLOW GRAPH main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::i#2 ← phi( main/(byte) 100 main::@3/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@3/(byte) main::i#1 ) call nest param-assignment to:main::@3 main::@3: scope:[main] from main::@1 (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -568,10 +568,10 @@ main::@return: scope:[main] from main::@3 nest: scope:[nest] from main::@1 to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 - (byte) nest::j#2 ← phi( nest/(byte) 100 nest::@1/(byte) nest::j#1 ) + (byte) nest::j#2 ← phi( nest/(byte/signed byte/word/signed word) 100 nest::@1/(byte) nest::j#1 ) *((const byte*) SCREEN#0) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - if((byte) nest::j#1>(byte) 0) goto nest::@1 + if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 to:nest::@return nest::@return: scope:[nest] from nest::@1 return @@ -586,7 +586,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@3 @@ -615,12 +615,12 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main main::@4 - (byte) main::i#2 ← phi( main/(byte) 100 main::@4/(byte~) main::i#4 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@4/(byte~) main::i#4 ) call nest param-assignment to:main::@3 main::@3: scope:[main] from main::@1 (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@4 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@4 to:main::@return main::@return: scope:[main] from main::@3 return @@ -631,10 +631,10 @@ main::@4: scope:[main] from main::@3 nest: scope:[nest] from main::@1 to:nest::@1 nest::@1: scope:[nest] from nest nest::@3 - (byte) nest::j#2 ← phi( nest/(byte) 100 nest::@3/(byte~) nest::j#3 ) + (byte) nest::j#2 ← phi( nest/(byte/signed byte/word/signed word) 100 nest::@3/(byte~) nest::j#3 ) *((const byte*) SCREEN#0) ← (byte) nest::j#2 (byte) nest::j#1 ← -- (byte) nest::j#2 - if((byte) nest::j#1>(byte) 0) goto nest::@3 + if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@3 to:nest::@return nest::@return: scope:[nest] from nest::@1 return @@ -663,12 +663,12 @@ main: scope:[main] from @2 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@4 - [2] (byte) main::i#2 ← phi( main/(byte) 100 main::@4/(byte~) main::i#4 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@4/(byte~) main::i#4 ) [ main::i#2 ] [3] call nest param-assignment [ main::i#2 ] to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] - [5] if((byte) main::i#1>(byte) 0) goto main::@4 [ main::i#1 ] + [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@4 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@3 [6] return [ ] @@ -680,10 +680,10 @@ nest: scope:[nest] from main::@1 [8] phi() [ ] to:nest::@1 nest::@1: scope:[nest] from nest nest::@3 - [9] (byte) nest::j#2 ← phi( nest/(byte) 100 nest::@3/(byte~) nest::j#3 ) [ nest::j#2 ] + [9] (byte) nest::j#2 ← phi( nest/(byte/signed byte/word/signed word) 100 nest::@3/(byte~) nest::j#3 ) [ nest::j#2 ] [10] *((const byte*) SCREEN#0) ← (byte) nest::j#2 [ nest::j#2 ] [11] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] - [12] if((byte) nest::j#1>(byte) 0) goto nest::@3 [ nest::j#1 ] + [12] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@3 [ nest::j#1 ] to:nest::@return nest::@return: scope:[nest] from nest::@1 [13] return [ ] @@ -715,12 +715,12 @@ main: scope:[main] from @2 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@3 - [2] (byte) main::i#2 ← phi( main/(byte) 100 main::@3/(byte) main::i#1 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@3/(byte) main::i#1 ) [ main::i#2 ] [3] call nest param-assignment [ main::i#2 ] to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] - [5] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] + [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@3 [6] return [ ] @@ -729,10 +729,10 @@ nest: scope:[nest] from main::@1 [7] phi() [ ] to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 - [8] (byte) nest::j#2 ← phi( nest/(byte) 100 nest::@1/(byte) nest::j#1 ) [ nest::j#2 ] + [8] (byte) nest::j#2 ← phi( nest/(byte/signed byte/word/signed word) 100 nest::@1/(byte) nest::j#1 ) [ nest::j#2 ] [9] *((const byte*) SCREEN#0) ← (byte) nest::j#2 [ nest::j#2 ] [10] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] - [11] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ nest::j#1 ] + [11] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 [ nest::j#1 ] to:nest::@return nest::@return: scope:[nest] from nest::@1 [12] return [ ] @@ -749,12 +749,12 @@ main: scope:[main] from @2 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@3 - [2] (byte) main::i#2 ← phi( main/(byte) 100 main::@3/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@3/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] call nest param-assignment [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@3 main::@3: scope:[main] from main::@1 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [5] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@3 [6] return [ ] ( main:0 [ ] ) @@ -763,10 +763,10 @@ nest: scope:[nest] from main::@1 [7] phi() [ ] ( main:0::nest:3 [ main::i#2 ] ) to:nest::@1 nest::@1: scope:[nest] from nest nest::@1 - [8] (byte) nest::j#2 ← phi( nest/(byte) 100 nest::@1/(byte) nest::j#1 ) [ nest::j#2 ] ( main:0::nest:3 [ main::i#2 nest::j#2 ] ) + [8] (byte) nest::j#2 ← phi( nest/(byte/signed byte/word/signed word) 100 nest::@1/(byte) nest::j#1 ) [ nest::j#2 ] ( main:0::nest:3 [ main::i#2 nest::j#2 ] ) [9] *((const byte*) SCREEN#0) ← (byte) nest::j#2 [ nest::j#2 ] ( main:0::nest:3 [ main::i#2 nest::j#2 ] ) [10] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) - [11] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) + [11] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) to:nest::@return nest::@return: scope:[nest] from nest::@1 [12] return [ ] ( main:0::nest:3 [ main::i#2 ] ) @@ -775,14 +775,14 @@ nest::@return: scope:[nest] from nest::@1 DOMINATORS @begin dominated by @begin @2 dominated by @2 @begin -@end dominated by @2 @end @begin +@end dominated by @2 @begin @end main dominated by @2 @begin main main::@1 dominated by @2 @begin main::@1 main -main::@3 dominated by @2 @begin main::@1 main::@3 main -main::@return dominated by @2 main::@return @begin main::@1 main::@3 main -nest dominated by @2 @begin nest main::@1 main -nest::@1 dominated by @2 @begin nest main::@1 nest::@1 main -nest::@return dominated by @2 nest::@return @begin nest main::@1 nest::@1 main +main::@3 dominated by @2 @begin main::@1 main main::@3 +main::@return dominated by main::@return @2 @begin main::@1 main main::@3 +nest dominated by @2 @begin main::@1 main nest +nest::@1 dominated by @2 @begin main::@1 nest::@1 main nest +nest::@return dominated by nest::@return @2 @begin main::@1 nest::@1 main nest Found back edge: Loop head: main::@1 tails: main::@3 blocks: null Found back edge: Loop head: nest::@1 tails: nest::@1 blocks: null @@ -845,7 +845,7 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -864,7 +864,7 @@ main: { b3: //SEG16 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG17 [5] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG17 [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn @@ -878,7 +878,7 @@ nest: { .label j = 3 //SEG21 [8] phi from nest to nest::@1 [phi:nest->nest::@1] b1_from_nest: - //SEG22 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- zpby1=coby1 + //SEG22 [8] phi (byte) nest::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest->nest::@1#0] -- zpby1=coby1 lda #$64 sta j jmp b1 @@ -893,7 +893,7 @@ nest: { sta SCREEN //SEG27 [10] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG28 [11] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- zpby1_gt_0_then_la1 + //SEG28 [11] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- zpby1_gt_0_then_la1 lda j bne b1_from_b1 jmp breturn @@ -944,7 +944,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 jmp b1 //SEG10 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] @@ -960,7 +960,7 @@ main: { b3: //SEG16 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_dec_yby dey - //SEG17 [5] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 + //SEG17 [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b1_from_b3 //SEG18 main::@return @@ -972,7 +972,7 @@ main: { nest: { //SEG21 [8] phi from nest to nest::@1 [phi:nest->nest::@1] b1_from_nest: - //SEG22 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 + //SEG22 [8] phi (byte) nest::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 jmp b1 //SEG23 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] @@ -984,7 +984,7 @@ nest: { stx SCREEN //SEG27 [10] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby=_dec_xby dex - //SEG28 [11] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 + //SEG28 [11] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1_from_b1 //SEG29 nest::@return @@ -1020,7 +1020,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 jmp b1 //SEG10 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] @@ -1034,7 +1034,7 @@ main: { b3: //SEG16 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_dec_yby dey - //SEG17 [5] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 + //SEG17 [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b1 //SEG18 main::@return @@ -1046,7 +1046,7 @@ main: { nest: { //SEG21 [8] phi from nest to nest::@1 [phi:nest->nest::@1] b1_from_nest: - //SEG22 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 + //SEG22 [8] phi (byte) nest::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 jmp b1 //SEG23 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] @@ -1057,7 +1057,7 @@ nest: { stx SCREEN //SEG27 [10] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby=_dec_xby dex - //SEG28 [11] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 + //SEG28 [11] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG29 nest::@return @@ -1090,7 +1090,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 jmp b1 //SEG10 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] @@ -1103,7 +1103,7 @@ main: { //SEG15 main::@3 //SEG16 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_dec_yby dey - //SEG17 [5] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 + //SEG17 [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b1 //SEG18 main::@return @@ -1113,7 +1113,7 @@ main: { //SEG20 nest nest: { //SEG21 [8] phi from nest to nest::@1 [phi:nest->nest::@1] - //SEG22 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 + //SEG22 [8] phi (byte) nest::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 jmp b1 //SEG23 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] @@ -1124,7 +1124,7 @@ nest: { stx SCREEN //SEG27 [10] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby=_dec_xby dex - //SEG28 [11] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 + //SEG28 [11] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG29 nest::@return @@ -1151,7 +1151,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 //SEG10 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy @@ -1163,7 +1163,7 @@ main: { //SEG15 main::@3 //SEG16 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_dec_yby dey - //SEG17 [5] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 + //SEG17 [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b1 //SEG18 main::@return @@ -1173,7 +1173,7 @@ main: { //SEG20 nest nest: { //SEG21 [8] phi from nest to nest::@1 [phi:nest->nest::@1] - //SEG22 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 + //SEG22 [8] phi (byte) nest::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 //SEG23 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] //SEG24 [8] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy @@ -1183,7 +1183,7 @@ nest: { stx SCREEN //SEG27 [10] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby=_dec_xby dex - //SEG28 [11] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 + //SEG28 [11] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG29 nest::@return @@ -1196,7 +1196,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@3 @@ -1230,7 +1230,7 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 //SEG10 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy @@ -1242,7 +1242,7 @@ main: { //SEG15 main::@3 //SEG16 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_dec_yby dey - //SEG17 [5] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 + //SEG17 [5] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b1 //SEG18 main::@return @@ -1252,7 +1252,7 @@ main: { //SEG20 nest nest: { //SEG21 [8] phi from nest to nest::@1 [phi:nest->nest::@1] - //SEG22 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 + //SEG22 [8] phi (byte) nest::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 //SEG23 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] //SEG24 [8] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy @@ -1262,7 +1262,7 @@ nest: { stx SCREEN //SEG27 [10] (byte) nest::j#1 ← -- (byte) nest::j#2 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby=_dec_xby dex - //SEG28 [11] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 + //SEG28 [11] if((byte) nest::j#1>(byte/signed byte/word/signed word) 0) goto nest::@1 [ nest::j#1 ] ( main:0::nest:3 [ main::i#2 nest::j#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG29 nest::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopnest.sym b/src/main/java/dk/camelot64/kickc/test/ref/loopnest.sym index f0ef01b73..5d2e42d69 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@3 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.cfg b/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.cfg index 801bef7ca..1f2ab5faf 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.cfg @@ -8,19 +8,19 @@ main: scope:[main] from @3 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@3 - [2] (byte) main::i#5 ← phi( main/(byte) 100 main::@3/(byte) main::i#1 ) [ main::i#5 ] ( main:0 [ main::i#5 ] ) + [2] (byte) main::i#5 ← phi( main/(byte/signed byte/word/signed word) 100 main::@3/(byte) main::i#1 ) [ main::i#5 ] ( main:0 [ main::i#5 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@5 - [3] (byte) main::j#2 ← phi( main::@1/(byte) 100 main::@5/(byte) main::j#1 ) [ main::i#5 main::j#2 ] ( main:0 [ main::i#5 main::j#2 ] ) + [3] (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 100 main::@5/(byte) main::j#1 ) [ main::i#5 main::j#2 ] ( main:0 [ main::i#5 main::j#2 ] ) [4] call nest1 param-assignment [ main::i#5 main::j#2 ] ( main:0 [ main::i#5 main::j#2 ] ) to:main::@5 main::@5: scope:[main] from main::@2 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) - [6] if((byte) main::j#1>(byte) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) + [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) to:main::@3 main::@3: scope:[main] from main::@5 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [8] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@3 [9] return [ ] ( main:0 [ ] ) @@ -29,19 +29,19 @@ nest1: scope:[nest1] from main::@2 [10] phi() [ ] ( main:0::nest1:4 [ main::i#5 main::j#2 ] ) to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 - [11] (byte) nest1::i#5 ← phi( nest1/(byte) 100 nest1::@3/(byte) nest1::i#1 ) [ nest1::i#5 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 ] ) + [11] (byte) nest1::i#5 ← phi( nest1/(byte/signed byte/word/signed word) 100 nest1::@3/(byte) nest1::i#1 ) [ nest1::i#5 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 ] ) to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 - [12] (byte) nest1::j#2 ← phi( nest1::@1/(byte) 100 nest1::@5/(byte) nest1::j#1 ) [ nest1::i#5 nest1::j#2 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) + [12] (byte) nest1::j#2 ← phi( nest1::@1/(byte/signed byte/word/signed word) 100 nest1::@5/(byte) nest1::j#1 ) [ nest1::i#5 nest1::j#2 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) [13] call nest2 param-assignment [ nest1::i#5 nest1::j#2 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) - [15] if((byte) nest1::j#1>(byte) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) + [15] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 [16] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) - [17] if((byte) nest1::i#1>(byte) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) + [17] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 [18] return [ ] ( main:0::nest1:4 [ main::i#5 main::j#2 ] ) @@ -50,17 +50,17 @@ nest2: scope:[nest2] from nest1::@2 [19] phi() [ ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 - [20] (byte) nest2::i#4 ← phi( nest2/(byte) 100 nest2::@3/(byte) nest2::i#1 ) [ nest2::i#4 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 ] ) + [20] (byte) nest2::i#4 ← phi( nest2/(byte/signed byte/word/signed word) 100 nest2::@3/(byte) nest2::i#1 ) [ nest2::i#4 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 ] ) to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 - [21] (byte) nest2::j#2 ← phi( nest2::@1/(byte) 100 nest2::@2/(byte) nest2::j#1 ) [ nest2::i#4 nest2::j#2 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#2 ] ) + [21] (byte) nest2::j#2 ← phi( nest2::@1/(byte/signed byte/word/signed word) 100 nest2::@2/(byte) nest2::j#1 ) [ nest2::i#4 nest2::j#2 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#2 ] ) [22] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 [ nest2::i#4 nest2::j#2 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#2 ] ) [23] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) - [24] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) + [24] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 [25] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) - [26] if((byte) nest2::i#1>(byte) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) + [26] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 [27] return [ ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log b/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log index 9b18958e6..acc03bcd1 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log @@ -37,48 +37,48 @@ Adding pre/post-modifier (byte) nest1::i ← -- (byte) nest1::i Adding pre/post-modifier (byte) nest2::j ← -- (byte) nest2::j Adding pre/post-modifier (byte) nest2::i ← -- (byte) nest2::i PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() - (byte) main::i ← (byte) 100 + (byte) main::i ← (byte/signed byte/word/signed word) 100 main::@1: - (byte) main::j ← (byte) 100 + (byte) main::j ← (byte/signed byte/word/signed word) 100 main::@2: (void~) main::$0 ← call nest1 (byte) main::j ← -- (byte) main::j - (boolean~) main::$1 ← (byte) main::j > (byte) 0 + (boolean~) main::$1 ← (byte) main::j > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 (byte) main::i ← -- (byte) main::i - (boolean~) main::$2 ← (byte) main::i > (byte) 0 + (boolean~) main::$2 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 main::@return: return endproc // main() proc (void()) nest1() - (byte) nest1::i ← (byte) 100 + (byte) nest1::i ← (byte/signed byte/word/signed word) 100 nest1::@1: - (byte) nest1::j ← (byte) 100 + (byte) nest1::j ← (byte/signed byte/word/signed word) 100 nest1::@2: (void~) nest1::$0 ← call nest2 (byte) nest1::j ← -- (byte) nest1::j - (boolean~) nest1::$1 ← (byte) nest1::j > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 (byte) nest1::i ← -- (byte) nest1::i - (boolean~) nest1::$2 ← (byte) nest1::i > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 nest1::@return: return endproc // nest1() proc (void()) nest2() - (byte) nest2::i ← (byte) 100 + (byte) nest2::i ← (byte/signed byte/word/signed word) 100 nest2::@1: - (byte) nest2::j ← (byte) 100 + (byte) nest2::j ← (byte/signed byte/word/signed word) 100 nest2::@2: *((byte*) SCREEN) ← (byte) nest2::j (byte) nest2::j ← -- (byte) nest2::j - (boolean~) nest2::$0 ← (byte) nest2::j > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 (byte) nest2::i ← -- (byte) nest2::i - (boolean~) nest2::$1 ← (byte) nest2::i > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 nest2::@return: return @@ -116,23 +116,23 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 100 + (byte) main::i ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::j ← (byte) 100 + (byte) main::j ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (void~) main::$0 ← call nest1 (byte) main::j ← -- (byte) main::j - (boolean~) main::$1 ← (byte) main::j > (byte) 0 + (boolean~) main::$1 ← (byte) main::j > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::i ← -- (byte) main::i - (boolean~) main::$2 ← (byte) main::i > (byte) 0 + (boolean~) main::$2 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@3 @@ -143,20 +143,20 @@ main::@return: scope:[main] from main::@4 @1: scope:[] from @begin to:@2 nest1: scope:[nest1] from - (byte) nest1::i ← (byte) 100 + (byte) nest1::i ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 - (byte) nest1::j ← (byte) 100 + (byte) nest1::j ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@2 (void~) nest1::$0 ← call nest2 (byte) nest1::j ← -- (byte) nest1::j - (boolean~) nest1::$1 ← (byte) nest1::j > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@2 (byte) nest1::i ← -- (byte) nest1::i - (boolean~) nest1::$2 ← (byte) nest1::i > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 to:nest1::@4 nest1::@4: scope:[nest1] from nest1::@3 @@ -167,20 +167,20 @@ nest1::@return: scope:[nest1] from nest1::@4 @2: scope:[] from @1 to:@3 nest2: scope:[nest2] from - (byte) nest2::i ← (byte) 100 + (byte) nest2::i ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 - (byte) nest2::j ← (byte) 100 + (byte) nest2::j ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 *((byte*) SCREEN) ← (byte) nest2::j (byte) nest2::j ← -- (byte) nest2::j - (boolean~) nest2::$0 ← (byte) nest2::j > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i ← -- (byte) nest2::i - (boolean~) nest2::$1 ← (byte) nest2::i > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 to:nest2::@4 nest2::@4: scope:[nest2] from nest2::@3 @@ -200,63 +200,63 @@ Removing empty block @2 Removing empty block nest2::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@3 main: scope:[main] from - (byte) main::i ← (byte) 100 + (byte) main::i ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::j ← (byte) 100 + (byte) main::j ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (void~) main::$0 ← call nest1 (byte) main::j ← -- (byte) main::j - (boolean~) main::$1 ← (byte) main::j > (byte) 0 + (boolean~) main::$1 ← (byte) main::j > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::i ← -- (byte) main::i - (boolean~) main::$2 ← (byte) main::i > (byte) 0 + (boolean~) main::$2 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest1: scope:[nest1] from - (byte) nest1::i ← (byte) 100 + (byte) nest1::i ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 - (byte) nest1::j ← (byte) 100 + (byte) nest1::j ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@2 (void~) nest1::$0 ← call nest2 (byte) nest1::j ← -- (byte) nest1::j - (boolean~) nest1::$1 ← (byte) nest1::j > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@2 (byte) nest1::i ← -- (byte) nest1::i - (boolean~) nest1::$2 ← (byte) nest1::i > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return to:@return nest2: scope:[nest2] from - (byte) nest2::i ← (byte) 100 + (byte) nest2::i ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 - (byte) nest2::j ← (byte) 100 + (byte) nest2::j ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 *((byte*) SCREEN) ← (byte) nest2::j (byte) nest2::j ← -- (byte) nest2::j - (boolean~) nest2::$0 ← (byte) nest2::j > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i ← -- (byte) nest2::i - (boolean~) nest2::$1 ← (byte) nest2::i > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 @@ -271,67 +271,67 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i ← (byte) 100 + (byte) main::i ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::j ← (byte) 100 + (byte) main::j ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 call nest1 param-assignment to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j ← -- (byte) main::j - (boolean~) main::$1 ← (byte) main::j > (byte) 0 + (boolean~) main::$1 ← (byte) main::j > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i ← -- (byte) main::i - (boolean~) main::$2 ← (byte) main::i > (byte) 0 + (boolean~) main::$2 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest1: scope:[nest1] from main::@2 - (byte) nest1::i ← (byte) 100 + (byte) nest1::i ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 - (byte) nest1::j ← (byte) 100 + (byte) nest1::j ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 call nest2 param-assignment to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j ← -- (byte) nest1::j - (boolean~) nest1::$1 ← (byte) nest1::j > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i ← -- (byte) nest1::i - (boolean~) nest1::$2 ← (byte) nest1::i > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return to:@return nest2: scope:[nest2] from nest1::@2 - (byte) nest2::i ← (byte) 100 + (byte) nest2::i ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 - (byte) nest2::j ← (byte) 100 + (byte) nest2::j ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 *((byte*) SCREEN) ← (byte) nest2::j (byte) nest2::j ← -- (byte) nest2::j - (boolean~) nest2::$0 ← (byte) nest2::j > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i ← -- (byte) nest2::i - (boolean~) nest2::$1 ← (byte) nest2::i > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 @@ -356,16 +356,16 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 ) - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#11 ← phi( main/(byte*) SCREEN#13 main::@3/(byte*) SCREEN#14 ) (byte) main::i#5 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#11 main::@5/(byte*) SCREEN#12 ) @@ -378,14 +378,14 @@ main::@5: scope:[main] from main::@2 (byte) main::i#3 ← phi( main::@2/(byte) main::i#4 ) (byte) main::j#2 ← phi( main::@2/(byte) main::j#3 ) (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte*) SCREEN#14 ← phi( main::@5/(byte*) SCREEN#12 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#3 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$2 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 @@ -393,12 +393,12 @@ main::@return: scope:[main] from main::@3 to:@return nest1: scope:[nest1] from main::@2 (byte*) SCREEN#8 ← phi( main::@2/(byte*) SCREEN#10 ) - (byte) nest1::i#0 ← (byte) 100 + (byte) nest1::i#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 (byte*) SCREEN#6 ← phi( nest1/(byte*) SCREEN#8 nest1::@3/(byte*) SCREEN#9 ) (byte) nest1::i#5 ← phi( nest1/(byte) nest1::i#0 nest1::@3/(byte) nest1::i#1 ) - (byte) nest1::j#0 ← (byte) 100 + (byte) nest1::j#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 (byte*) SCREEN#5 ← phi( nest1::@1/(byte*) SCREEN#6 nest1::@5/(byte*) SCREEN#7 ) @@ -411,14 +411,14 @@ nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::i#3 ← phi( nest1::@2/(byte) nest1::i#4 ) (byte) nest1::j#2 ← phi( nest1::@2/(byte) nest1::j#3 ) (byte) nest1::j#1 ← -- (byte) nest1::j#2 - (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte*) SCREEN#9 ← phi( nest1::@5/(byte*) SCREEN#7 ) (byte) nest1::i#2 ← phi( nest1::@5/(byte) nest1::i#3 ) (byte) nest1::i#1 ← -- (byte) nest1::i#2 - (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 @@ -426,12 +426,12 @@ nest1::@return: scope:[nest1] from nest1::@3 to:@return nest2: scope:[nest2] from nest1::@2 (byte*) SCREEN#3 ← phi( nest1::@2/(byte*) SCREEN#5 ) - (byte) nest2::i#0 ← (byte) 100 + (byte) nest2::i#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 (byte) nest2::i#4 ← phi( nest2/(byte) nest2::i#0 nest2::@3/(byte) nest2::i#1 ) (byte*) SCREEN#2 ← phi( nest2/(byte*) SCREEN#3 nest2::@3/(byte*) SCREEN#4 ) - (byte) nest2::j#0 ← (byte) 100 + (byte) nest2::j#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::i#3 ← phi( nest2::@1/(byte) nest2::i#4 nest2::@2/(byte) nest2::i#3 ) @@ -439,14 +439,14 @@ nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((byte*) SCREEN#1) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte*) SCREEN#4 ← phi( nest2::@2/(byte*) SCREEN#1 ) (byte) nest2::i#2 ← phi( nest2::@2/(byte) nest2::i#3 ) (byte) nest2::i#1 ← -- (byte) nest2::i#2 - (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 @@ -462,16 +462,16 @@ nest2::@return: scope:[nest2] from nest2::@3 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 ) - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#11 ← phi( main/(byte*) SCREEN#13 main::@3/(byte*) SCREEN#14 ) (byte) main::i#5 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#11 main::@5/(byte*) SCREEN#12 ) @@ -484,14 +484,14 @@ main::@5: scope:[main] from main::@2 (byte) main::i#3 ← phi( main::@2/(byte) main::i#4 ) (byte) main::j#2 ← phi( main::@2/(byte) main::j#3 ) (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte*) SCREEN#14 ← phi( main::@5/(byte*) SCREEN#12 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#3 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$2 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 @@ -499,12 +499,12 @@ main::@return: scope:[main] from main::@3 to:@return nest1: scope:[nest1] from main::@2 (byte*) SCREEN#8 ← phi( main::@2/(byte*) SCREEN#10 ) - (byte) nest1::i#0 ← (byte) 100 + (byte) nest1::i#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 (byte*) SCREEN#6 ← phi( nest1/(byte*) SCREEN#8 nest1::@3/(byte*) SCREEN#9 ) (byte) nest1::i#5 ← phi( nest1/(byte) nest1::i#0 nest1::@3/(byte) nest1::i#1 ) - (byte) nest1::j#0 ← (byte) 100 + (byte) nest1::j#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 (byte*) SCREEN#5 ← phi( nest1::@1/(byte*) SCREEN#6 nest1::@5/(byte*) SCREEN#7 ) @@ -517,14 +517,14 @@ nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::i#3 ← phi( nest1::@2/(byte) nest1::i#4 ) (byte) nest1::j#2 ← phi( nest1::@2/(byte) nest1::j#3 ) (byte) nest1::j#1 ← -- (byte) nest1::j#2 - (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte*) SCREEN#9 ← phi( nest1::@5/(byte*) SCREEN#7 ) (byte) nest1::i#2 ← phi( nest1::@5/(byte) nest1::i#3 ) (byte) nest1::i#1 ← -- (byte) nest1::i#2 - (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 @@ -532,12 +532,12 @@ nest1::@return: scope:[nest1] from nest1::@3 to:@return nest2: scope:[nest2] from nest1::@2 (byte*) SCREEN#3 ← phi( nest1::@2/(byte*) SCREEN#5 ) - (byte) nest2::i#0 ← (byte) 100 + (byte) nest2::i#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 (byte) nest2::i#4 ← phi( nest2/(byte) nest2::i#0 nest2::@3/(byte) nest2::i#1 ) (byte*) SCREEN#2 ← phi( nest2/(byte*) SCREEN#3 nest2::@3/(byte*) SCREEN#4 ) - (byte) nest2::j#0 ← (byte) 100 + (byte) nest2::j#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::i#3 ← phi( nest2::@1/(byte) nest2::i#4 nest2::@2/(byte) nest2::i#3 ) @@ -545,14 +545,14 @@ nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((byte*) SCREEN#1) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte*) SCREEN#4 ← phi( nest2::@2/(byte*) SCREEN#1 ) (byte) nest2::i#2 ← phi( nest2::@2/(byte) nest2::i#3 ) (byte) nest2::i#1 ← -- (byte) nest2::i#2 - (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 @@ -650,16 +650,16 @@ Culled Empty Block (label) @4 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 ) - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#11 ← phi( main/(byte*) SCREEN#13 main::@3/(byte*) SCREEN#14 ) (byte) main::i#5 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#11 main::@5/(byte*) SCREEN#12 ) @@ -672,14 +672,14 @@ main::@5: scope:[main] from main::@2 (byte) main::i#3 ← phi( main::@2/(byte) main::i#4 ) (byte) main::j#2 ← phi( main::@2/(byte) main::j#3 ) (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte*) SCREEN#14 ← phi( main::@5/(byte*) SCREEN#12 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#3 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$2 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 @@ -687,12 +687,12 @@ main::@return: scope:[main] from main::@3 to:@return nest1: scope:[nest1] from main::@2 (byte*) SCREEN#8 ← phi( main::@2/(byte*) SCREEN#10 ) - (byte) nest1::i#0 ← (byte) 100 + (byte) nest1::i#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 (byte*) SCREEN#6 ← phi( nest1/(byte*) SCREEN#8 nest1::@3/(byte*) SCREEN#9 ) (byte) nest1::i#5 ← phi( nest1/(byte) nest1::i#0 nest1::@3/(byte) nest1::i#1 ) - (byte) nest1::j#0 ← (byte) 100 + (byte) nest1::j#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 (byte*) SCREEN#5 ← phi( nest1::@1/(byte*) SCREEN#6 nest1::@5/(byte*) SCREEN#7 ) @@ -705,14 +705,14 @@ nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::i#3 ← phi( nest1::@2/(byte) nest1::i#4 ) (byte) nest1::j#2 ← phi( nest1::@2/(byte) nest1::j#3 ) (byte) nest1::j#1 ← -- (byte) nest1::j#2 - (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte*) SCREEN#9 ← phi( nest1::@5/(byte*) SCREEN#7 ) (byte) nest1::i#2 ← phi( nest1::@5/(byte) nest1::i#3 ) (byte) nest1::i#1 ← -- (byte) nest1::i#2 - (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 @@ -720,12 +720,12 @@ nest1::@return: scope:[nest1] from nest1::@3 to:@return nest2: scope:[nest2] from nest1::@2 (byte*) SCREEN#3 ← phi( nest1::@2/(byte*) SCREEN#5 ) - (byte) nest2::i#0 ← (byte) 100 + (byte) nest2::i#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 (byte) nest2::i#4 ← phi( nest2/(byte) nest2::i#0 nest2::@3/(byte) nest2::i#1 ) (byte*) SCREEN#2 ← phi( nest2/(byte*) SCREEN#3 nest2::@3/(byte*) SCREEN#4 ) - (byte) nest2::j#0 ← (byte) 100 + (byte) nest2::j#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::i#3 ← phi( nest2::@1/(byte) nest2::i#4 nest2::@2/(byte) nest2::i#3 ) @@ -733,14 +733,14 @@ nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((byte*) SCREEN#1) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte*) SCREEN#4 ← phi( nest2::@2/(byte*) SCREEN#1 ) (byte) nest2::i#2 ← phi( nest2::@2/(byte) nest2::i#3 ) (byte) nest2::i#1 ← -- (byte) nest2::i#2 - (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 @@ -764,15 +764,15 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#4 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#11 ← phi( main/(byte*) SCREEN#0 main::@3/(byte*) SCREEN#10 ) (byte) main::i#5 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#11 main::@5/(byte*) SCREEN#10 ) @@ -782,24 +782,24 @@ main::@2: scope:[main] from main::@1 main::@5 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$2 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest1: scope:[nest1] from main::@2 - (byte) nest1::i#0 ← (byte) 100 + (byte) nest1::i#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 (byte*) SCREEN#6 ← phi( nest1/(byte*) SCREEN#10 nest1::@3/(byte*) SCREEN#3 ) (byte) nest1::i#5 ← phi( nest1/(byte) nest1::i#0 nest1::@3/(byte) nest1::i#1 ) - (byte) nest1::j#0 ← (byte) 100 + (byte) nest1::j#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 (byte*) SCREEN#3 ← phi( nest1::@1/(byte*) SCREEN#6 nest1::@5/(byte*) SCREEN#3 ) @@ -809,24 +809,24 @@ nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j#1 ← -- (byte) nest1::j#2 - (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i#1 ← -- (byte) nest1::i#2 - (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return to:@return nest2: scope:[nest2] from nest1::@2 - (byte) nest2::i#0 ← (byte) 100 + (byte) nest2::i#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 (byte) nest2::i#4 ← phi( nest2/(byte) nest2::i#0 nest2::@3/(byte) nest2::i#1 ) (byte*) SCREEN#2 ← phi( nest2/(byte*) SCREEN#3 nest2::@3/(byte*) SCREEN#1 ) - (byte) nest2::j#0 ← (byte) 100 + (byte) nest2::j#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::i#2 ← phi( nest2::@1/(byte) nest2::i#4 nest2::@2/(byte) nest2::i#2 ) @@ -834,12 +834,12 @@ nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((byte*) SCREEN#1) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i#1 ← -- (byte) nest2::i#2 - (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 @@ -859,15 +859,15 @@ Self Phi Eliminated (byte) nest2::i#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#11 ← phi( main/(byte*) SCREEN#0 main::@3/(byte*) SCREEN#10 ) (byte) main::i#5 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte*) SCREEN#10 ← phi( main::@1/(byte*) SCREEN#11 ) @@ -877,24 +877,24 @@ main::@2: scope:[main] from main::@1 main::@5 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$2 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest1: scope:[nest1] from main::@2 - (byte) nest1::i#0 ← (byte) 100 + (byte) nest1::i#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 (byte*) SCREEN#6 ← phi( nest1/(byte*) SCREEN#10 nest1::@3/(byte*) SCREEN#3 ) (byte) nest1::i#5 ← phi( nest1/(byte) nest1::i#0 nest1::@3/(byte) nest1::i#1 ) - (byte) nest1::j#0 ← (byte) 100 + (byte) nest1::j#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 (byte*) SCREEN#3 ← phi( nest1::@1/(byte*) SCREEN#6 ) @@ -904,24 +904,24 @@ nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j#1 ← -- (byte) nest1::j#2 - (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i#1 ← -- (byte) nest1::i#2 - (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return to:@return nest2: scope:[nest2] from nest1::@2 - (byte) nest2::i#0 ← (byte) 100 + (byte) nest2::i#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 (byte) nest2::i#4 ← phi( nest2/(byte) nest2::i#0 nest2::@3/(byte) nest2::i#1 ) (byte*) SCREEN#2 ← phi( nest2/(byte*) SCREEN#3 nest2::@3/(byte*) SCREEN#1 ) - (byte) nest2::j#0 ← (byte) 100 + (byte) nest2::j#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::i#2 ← phi( nest2::@1/(byte) nest2::i#4 ) @@ -929,12 +929,12 @@ nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((byte*) SCREEN#1) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i#1 ← -- (byte) nest2::i#2 - (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 @@ -954,15 +954,15 @@ Redundant Phi (byte) nest2::i#2 (byte) nest2::i#4 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#11 ← phi( main/(byte*) SCREEN#0 main::@3/(byte*) SCREEN#11 ) (byte) main::i#5 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@5/(byte) main::j#1 ) @@ -970,24 +970,24 @@ main::@2: scope:[main] from main::@1 main::@5 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j#1 ← -- (byte) main::j#2 - (boolean~) main::$1 ← (byte) main::j#1 > (byte) 0 + (boolean~) main::$1 ← (byte) main::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i#1 ← -- (byte) main::i#5 - (boolean~) main::$2 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$2 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest1: scope:[nest1] from main::@2 - (byte) nest1::i#0 ← (byte) 100 + (byte) nest1::i#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 (byte*) SCREEN#6 ← phi( nest1/(byte*) SCREEN#11 nest1::@3/(byte*) SCREEN#6 ) (byte) nest1::i#5 ← phi( nest1/(byte) nest1::i#0 nest1::@3/(byte) nest1::i#1 ) - (byte) nest1::j#0 ← (byte) 100 + (byte) nest1::j#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 (byte) nest1::j#2 ← phi( nest1::@1/(byte) nest1::j#0 nest1::@5/(byte) nest1::j#1 ) @@ -995,35 +995,35 @@ nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j#1 ← -- (byte) nest1::j#2 - (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte) 0 + (boolean~) nest1::$1 ← (byte) nest1::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$1) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i#1 ← -- (byte) nest1::i#5 - (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte) 0 + (boolean~) nest1::$2 ← (byte) nest1::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest1::$2) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return to:@return nest2: scope:[nest2] from nest1::@2 - (byte) nest2::i#0 ← (byte) 100 + (byte) nest2::i#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 (byte) nest2::i#4 ← phi( nest2/(byte) nest2::i#0 nest2::@3/(byte) nest2::i#1 ) (byte*) SCREEN#2 ← phi( nest2/(byte*) SCREEN#6 nest2::@3/(byte*) SCREEN#2 ) - (byte) nest2::j#0 ← (byte) 100 + (byte) nest2::j#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((byte*) SCREEN#2) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte) 0 + (boolean~) nest2::$0 ← (byte) nest2::j#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i#1 ← -- (byte) nest2::i#4 - (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte) 0 + (boolean~) nest2::$1 ← (byte) nest2::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) nest2::$1) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 @@ -1034,24 +1034,24 @@ nest2::@return: scope:[nest2] from nest2::@3 to:@end @end: scope:[] from @3 -Simple Condition (boolean~) main::$1 if((byte) main::j#1>(byte) 0) goto main::@2 -Simple Condition (boolean~) main::$2 if((byte) main::i#1>(byte) 0) goto main::@1 -Simple Condition (boolean~) nest1::$1 if((byte) nest1::j#1>(byte) 0) goto nest1::@2 -Simple Condition (boolean~) nest1::$2 if((byte) nest1::i#1>(byte) 0) goto nest1::@1 -Simple Condition (boolean~) nest2::$0 if((byte) nest2::j#1>(byte) 0) goto nest2::@2 -Simple Condition (boolean~) nest2::$1 if((byte) nest2::i#1>(byte) 0) goto nest2::@1 +Simple Condition (boolean~) main::$1 if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 +Simple Condition (boolean~) main::$2 if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 +Simple Condition (boolean~) nest1::$1 if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 +Simple Condition (boolean~) nest1::$2 if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 +Simple Condition (boolean~) nest2::$0 if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 +Simple Condition (boolean~) nest2::$1 if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 100 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 to:main::@1 main::@1: scope:[main] from main main::@3 (byte*) SCREEN#11 ← phi( main/(byte*) SCREEN#0 main::@3/(byte*) SCREEN#11 ) (byte) main::i#5 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 ) - (byte) main::j#0 ← (byte) 100 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 100 to:main::@2 main::@2: scope:[main] from main::@1 main::@5 (byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@5/(byte) main::j#1 ) @@ -1059,22 +1059,22 @@ main::@2: scope:[main] from main::@1 main::@5 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1>(byte) 0) goto main::@2 + if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i#1 ← -- (byte) main::i#5 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return to:@return nest1: scope:[nest1] from main::@2 - (byte) nest1::i#0 ← (byte) 100 + (byte) nest1::i#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 (byte*) SCREEN#6 ← phi( nest1/(byte*) SCREEN#11 nest1::@3/(byte*) SCREEN#6 ) (byte) nest1::i#5 ← phi( nest1/(byte) nest1::i#0 nest1::@3/(byte) nest1::i#1 ) - (byte) nest1::j#0 ← (byte) 100 + (byte) nest1::j#0 ← (byte/signed byte/word/signed word) 100 to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 (byte) nest1::j#2 ← phi( nest1::@1/(byte) nest1::j#0 nest1::@5/(byte) nest1::j#1 ) @@ -1082,32 +1082,32 @@ nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j#1 ← -- (byte) nest1::j#2 - if((byte) nest1::j#1>(byte) 0) goto nest1::@2 + if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i#1 ← -- (byte) nest1::i#5 - if((byte) nest1::i#1>(byte) 0) goto nest1::@1 + if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return to:@return nest2: scope:[nest2] from nest1::@2 - (byte) nest2::i#0 ← (byte) 100 + (byte) nest2::i#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 (byte) nest2::i#4 ← phi( nest2/(byte) nest2::i#0 nest2::@3/(byte) nest2::i#1 ) (byte*) SCREEN#2 ← phi( nest2/(byte*) SCREEN#6 nest2::@3/(byte*) SCREEN#2 ) - (byte) nest2::j#0 ← (byte) 100 + (byte) nest2::j#0 ← (byte/signed byte/word/signed word) 100 to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((byte*) SCREEN#2) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - if((byte) nest2::j#1>(byte) 0) goto nest2::@2 + if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i#1 ← -- (byte) nest2::i#4 - if((byte) nest2::i#1>(byte) 0) goto nest2::@1 + if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 return @@ -1140,11 +1140,11 @@ main::@2: scope:[main] from main::@1 main::@5 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1>(byte) 0) goto main::@2 + if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i#1 ← -- (byte) main::i#5 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -1161,11 +1161,11 @@ nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j#1 ← -- (byte) nest1::j#2 - if((byte) nest1::j#1>(byte) 0) goto nest1::@2 + if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i#1 ← -- (byte) nest1::i#5 - if((byte) nest1::i#1>(byte) 0) goto nest1::@1 + if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return @@ -1180,11 +1180,11 @@ nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(const byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((byte*) SCREEN#2) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - if((byte) nest2::j#1>(byte) 0) goto nest2::@2 + if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i#1 ← -- (byte) nest2::i#4 - if((byte) nest2::i#1>(byte) 0) goto nest2::@1 + if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 return @@ -1213,11 +1213,11 @@ main::@2: scope:[main] from main::@1 main::@5 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1>(byte) 0) goto main::@2 + if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i#1 ← -- (byte) main::i#5 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -1234,11 +1234,11 @@ nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j#1 ← -- (byte) nest1::j#2 - if((byte) nest1::j#1>(byte) 0) goto nest1::@2 + if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i#1 ← -- (byte) nest1::i#5 - if((byte) nest1::i#1>(byte) 0) goto nest1::@1 + if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return @@ -1253,11 +1253,11 @@ nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(const byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((byte*) SCREEN#2) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - if((byte) nest2::j#1>(byte) 0) goto nest2::@2 + if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i#1 ← -- (byte) nest2::i#4 - if((byte) nest2::i#1>(byte) 0) goto nest2::@1 + if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 return @@ -1285,11 +1285,11 @@ main::@2: scope:[main] from main::@1 main::@5 to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1>(byte) 0) goto main::@2 + if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i#1 ← -- (byte) main::i#5 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -1305,11 +1305,11 @@ nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j#1 ← -- (byte) nest1::j#2 - if((byte) nest1::j#1>(byte) 0) goto nest1::@2 + if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i#1 ← -- (byte) nest1::i#5 - if((byte) nest1::i#1>(byte) 0) goto nest1::@1 + if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return @@ -1323,11 +1323,11 @@ nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 (byte) nest2::j#2 ← phi( nest2::@1/(const byte) nest2::j#0 nest2::@2/(byte) nest2::j#1 ) *((const byte*) SCREEN#0) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - if((byte) nest2::j#1>(byte) 0) goto nest2::@2 + if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i#1 ← -- (byte) nest2::i#4 - if((byte) nest2::i#1>(byte) 0) goto nest2::@1 + if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 return @@ -1349,12 +1349,12 @@ Inlining constant with var siblings (const byte) nest2::i#0 Inlining constant with var siblings (const byte) nest2::i#0 Inlining constant with var siblings (const byte) nest2::j#0 Inlining constant with var siblings (const byte) nest2::j#0 -Constant inlined nest1::i#0 = (byte) 100 -Constant inlined nest1::j#0 = (byte) 100 -Constant inlined nest2::i#0 = (byte) 100 -Constant inlined nest2::j#0 = (byte) 100 -Constant inlined main::j#0 = (byte) 100 -Constant inlined main::i#0 = (byte) 100 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 100 +Constant inlined nest2::j#0 = (byte/signed byte/word/signed word) 100 +Constant inlined main::j#0 = (byte/signed byte/word/signed word) 100 +Constant inlined nest2::i#0 = (byte/signed byte/word/signed word) 100 +Constant inlined nest1::j#0 = (byte/signed byte/word/signed word) 100 +Constant inlined nest1::i#0 = (byte/signed byte/word/signed word) 100 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -1362,19 +1362,19 @@ CONTROL FLOW GRAPH main: scope:[main] from @3 to:main::@1 main::@1: scope:[main] from main main::@3 - (byte) main::i#5 ← phi( main/(byte) 100 main::@3/(byte) main::i#1 ) + (byte) main::i#5 ← phi( main/(byte/signed byte/word/signed word) 100 main::@3/(byte) main::i#1 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@5 - (byte) main::j#2 ← phi( main::@1/(byte) 100 main::@5/(byte) main::j#1 ) + (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 100 main::@5/(byte) main::j#1 ) call nest1 param-assignment to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1>(byte) 0) goto main::@2 + if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i#1 ← -- (byte) main::i#5 - if((byte) main::i#1>(byte) 0) goto main::@1 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -1382,19 +1382,19 @@ main::@return: scope:[main] from main::@3 nest1: scope:[nest1] from main::@2 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 - (byte) nest1::i#5 ← phi( nest1/(byte) 100 nest1::@3/(byte) nest1::i#1 ) + (byte) nest1::i#5 ← phi( nest1/(byte/signed byte/word/signed word) 100 nest1::@3/(byte) nest1::i#1 ) to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 - (byte) nest1::j#2 ← phi( nest1::@1/(byte) 100 nest1::@5/(byte) nest1::j#1 ) + (byte) nest1::j#2 ← phi( nest1::@1/(byte/signed byte/word/signed word) 100 nest1::@5/(byte) nest1::j#1 ) call nest2 param-assignment to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j#1 ← -- (byte) nest1::j#2 - if((byte) nest1::j#1>(byte) 0) goto nest1::@2 + if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i#1 ← -- (byte) nest1::i#5 - if((byte) nest1::i#1>(byte) 0) goto nest1::@1 + if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return @@ -1402,17 +1402,17 @@ nest1::@return: scope:[nest1] from nest1::@3 nest2: scope:[nest2] from nest1::@2 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 - (byte) nest2::i#4 ← phi( nest2/(byte) 100 nest2::@3/(byte) nest2::i#1 ) + (byte) nest2::i#4 ← phi( nest2/(byte/signed byte/word/signed word) 100 nest2::@3/(byte) nest2::i#1 ) to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 - (byte) nest2::j#2 ← phi( nest2::@1/(byte) 100 nest2::@2/(byte) nest2::j#1 ) + (byte) nest2::j#2 ← phi( nest2::@1/(byte/signed byte/word/signed word) 100 nest2::@2/(byte) nest2::j#1 ) *((const byte*) SCREEN#0) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - if((byte) nest2::j#1>(byte) 0) goto nest2::@2 + if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i#1 ← -- (byte) nest2::i#4 - if((byte) nest2::i#1>(byte) 0) goto nest2::@1 + if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 return @@ -1427,7 +1427,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -1482,19 +1482,19 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @3 to:main::@1 main::@1: scope:[main] from main main::@6 - (byte) main::i#5 ← phi( main/(byte) 100 main::@6/(byte~) main::i#6 ) + (byte) main::i#5 ← phi( main/(byte/signed byte/word/signed word) 100 main::@6/(byte~) main::i#6 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@7 - (byte) main::j#2 ← phi( main::@1/(byte) 100 main::@7/(byte~) main::j#4 ) + (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 100 main::@7/(byte~) main::j#4 ) call nest1 param-assignment to:main::@5 main::@5: scope:[main] from main::@2 (byte) main::j#1 ← -- (byte) main::j#2 - if((byte) main::j#1>(byte) 0) goto main::@7 + if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@7 to:main::@3 main::@3: scope:[main] from main::@5 (byte) main::i#1 ← -- (byte) main::i#5 - if((byte) main::i#1>(byte) 0) goto main::@6 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@6 to:main::@return main::@return: scope:[main] from main::@3 return @@ -1508,19 +1508,19 @@ main::@7: scope:[main] from main::@5 nest1: scope:[nest1] from main::@2 to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@6 - (byte) nest1::i#5 ← phi( nest1/(byte) 100 nest1::@6/(byte~) nest1::i#6 ) + (byte) nest1::i#5 ← phi( nest1/(byte/signed byte/word/signed word) 100 nest1::@6/(byte~) nest1::i#6 ) to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@7 - (byte) nest1::j#2 ← phi( nest1::@1/(byte) 100 nest1::@7/(byte~) nest1::j#4 ) + (byte) nest1::j#2 ← phi( nest1::@1/(byte/signed byte/word/signed word) 100 nest1::@7/(byte~) nest1::j#4 ) call nest2 param-assignment to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 (byte) nest1::j#1 ← -- (byte) nest1::j#2 - if((byte) nest1::j#1>(byte) 0) goto nest1::@7 + if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@7 to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 (byte) nest1::i#1 ← -- (byte) nest1::i#5 - if((byte) nest1::i#1>(byte) 0) goto nest1::@6 + if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@6 to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 return @@ -1534,17 +1534,17 @@ nest1::@7: scope:[nest1] from nest1::@5 nest2: scope:[nest2] from nest1::@2 to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@5 - (byte) nest2::i#4 ← phi( nest2/(byte) 100 nest2::@5/(byte~) nest2::i#5 ) + (byte) nest2::i#4 ← phi( nest2/(byte/signed byte/word/signed word) 100 nest2::@5/(byte~) nest2::i#5 ) to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@6 - (byte) nest2::j#2 ← phi( nest2::@1/(byte) 100 nest2::@6/(byte~) nest2::j#3 ) + (byte) nest2::j#2 ← phi( nest2::@1/(byte/signed byte/word/signed word) 100 nest2::@6/(byte~) nest2::j#3 ) *((const byte*) SCREEN#0) ← (byte) nest2::j#2 (byte) nest2::j#1 ← -- (byte) nest2::j#2 - if((byte) nest2::j#1>(byte) 0) goto nest2::@6 + if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@6 to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 (byte) nest2::i#1 ← -- (byte) nest2::i#4 - if((byte) nest2::i#1>(byte) 0) goto nest2::@5 + if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@5 to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 return @@ -1581,19 +1581,19 @@ main: scope:[main] from @3 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@6 - [2] (byte) main::i#5 ← phi( main/(byte) 100 main::@6/(byte~) main::i#6 ) [ main::i#5 ] + [2] (byte) main::i#5 ← phi( main/(byte/signed byte/word/signed word) 100 main::@6/(byte~) main::i#6 ) [ main::i#5 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@7 - [3] (byte) main::j#2 ← phi( main::@1/(byte) 100 main::@7/(byte~) main::j#4 ) [ main::i#5 main::j#2 ] + [3] (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 100 main::@7/(byte~) main::j#4 ) [ main::i#5 main::j#2 ] [4] call nest1 param-assignment [ main::i#5 main::j#2 ] to:main::@5 main::@5: scope:[main] from main::@2 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] - [6] if((byte) main::j#1>(byte) 0) goto main::@7 [ main::i#5 main::j#1 ] + [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@7 [ main::i#5 main::j#1 ] to:main::@3 main::@3: scope:[main] from main::@5 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] - [8] if((byte) main::i#1>(byte) 0) goto main::@6 [ main::i#1 ] + [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@6 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@3 [9] return [ ] @@ -1608,19 +1608,19 @@ nest1: scope:[nest1] from main::@2 [12] phi() [ ] to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@6 - [13] (byte) nest1::i#5 ← phi( nest1/(byte) 100 nest1::@6/(byte~) nest1::i#6 ) [ nest1::i#5 ] + [13] (byte) nest1::i#5 ← phi( nest1/(byte/signed byte/word/signed word) 100 nest1::@6/(byte~) nest1::i#6 ) [ nest1::i#5 ] to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@7 - [14] (byte) nest1::j#2 ← phi( nest1::@1/(byte) 100 nest1::@7/(byte~) nest1::j#4 ) [ nest1::i#5 nest1::j#2 ] + [14] (byte) nest1::j#2 ← phi( nest1::@1/(byte/signed byte/word/signed word) 100 nest1::@7/(byte~) nest1::j#4 ) [ nest1::i#5 nest1::j#2 ] [15] call nest2 param-assignment [ nest1::i#5 nest1::j#2 ] to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 [16] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] - [17] if((byte) nest1::j#1>(byte) 0) goto nest1::@7 [ nest1::i#5 nest1::j#1 ] + [17] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@7 [ nest1::i#5 nest1::j#1 ] to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 [18] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] - [19] if((byte) nest1::i#1>(byte) 0) goto nest1::@6 [ nest1::i#1 ] + [19] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@6 [ nest1::i#1 ] to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 [20] return [ ] @@ -1635,17 +1635,17 @@ nest2: scope:[nest2] from nest1::@2 [23] phi() [ ] to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@5 - [24] (byte) nest2::i#4 ← phi( nest2/(byte) 100 nest2::@5/(byte~) nest2::i#5 ) [ nest2::i#4 ] + [24] (byte) nest2::i#4 ← phi( nest2/(byte/signed byte/word/signed word) 100 nest2::@5/(byte~) nest2::i#5 ) [ nest2::i#4 ] to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@6 - [25] (byte) nest2::j#2 ← phi( nest2::@1/(byte) 100 nest2::@6/(byte~) nest2::j#3 ) [ nest2::i#4 nest2::j#2 ] + [25] (byte) nest2::j#2 ← phi( nest2::@1/(byte/signed byte/word/signed word) 100 nest2::@6/(byte~) nest2::j#3 ) [ nest2::i#4 nest2::j#2 ] [26] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 [ nest2::i#4 nest2::j#2 ] [27] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] - [28] if((byte) nest2::j#1>(byte) 0) goto nest2::@6 [ nest2::i#4 nest2::j#1 ] + [28] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@6 [ nest2::i#4 nest2::j#1 ] to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 [29] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] - [30] if((byte) nest2::i#1>(byte) 0) goto nest2::@5 [ nest2::i#1 ] + [30] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@5 [ nest2::i#1 ] to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 [31] return [ ] @@ -1692,19 +1692,19 @@ main: scope:[main] from @3 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@3 - [2] (byte) main::i#5 ← phi( main/(byte) 100 main::@3/(byte) main::i#1 ) [ main::i#5 ] + [2] (byte) main::i#5 ← phi( main/(byte/signed byte/word/signed word) 100 main::@3/(byte) main::i#1 ) [ main::i#5 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@5 - [3] (byte) main::j#2 ← phi( main::@1/(byte) 100 main::@5/(byte) main::j#1 ) [ main::i#5 main::j#2 ] + [3] (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 100 main::@5/(byte) main::j#1 ) [ main::i#5 main::j#2 ] [4] call nest1 param-assignment [ main::i#5 main::j#2 ] to:main::@5 main::@5: scope:[main] from main::@2 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] - [6] if((byte) main::j#1>(byte) 0) goto main::@2 [ main::i#5 main::j#1 ] + [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::i#5 main::j#1 ] to:main::@3 main::@3: scope:[main] from main::@5 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] - [8] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] + [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@3 [9] return [ ] @@ -1713,19 +1713,19 @@ nest1: scope:[nest1] from main::@2 [10] phi() [ ] to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 - [11] (byte) nest1::i#5 ← phi( nest1/(byte) 100 nest1::@3/(byte) nest1::i#1 ) [ nest1::i#5 ] + [11] (byte) nest1::i#5 ← phi( nest1/(byte/signed byte/word/signed word) 100 nest1::@3/(byte) nest1::i#1 ) [ nest1::i#5 ] to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 - [12] (byte) nest1::j#2 ← phi( nest1::@1/(byte) 100 nest1::@5/(byte) nest1::j#1 ) [ nest1::i#5 nest1::j#2 ] + [12] (byte) nest1::j#2 ← phi( nest1::@1/(byte/signed byte/word/signed word) 100 nest1::@5/(byte) nest1::j#1 ) [ nest1::i#5 nest1::j#2 ] [13] call nest2 param-assignment [ nest1::i#5 nest1::j#2 ] to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] - [15] if((byte) nest1::j#1>(byte) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] + [15] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 [16] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] - [17] if((byte) nest1::i#1>(byte) 0) goto nest1::@1 [ nest1::i#1 ] + [17] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 [ nest1::i#1 ] to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 [18] return [ ] @@ -1734,17 +1734,17 @@ nest2: scope:[nest2] from nest1::@2 [19] phi() [ ] to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 - [20] (byte) nest2::i#4 ← phi( nest2/(byte) 100 nest2::@3/(byte) nest2::i#1 ) [ nest2::i#4 ] + [20] (byte) nest2::i#4 ← phi( nest2/(byte/signed byte/word/signed word) 100 nest2::@3/(byte) nest2::i#1 ) [ nest2::i#4 ] to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 - [21] (byte) nest2::j#2 ← phi( nest2::@1/(byte) 100 nest2::@2/(byte) nest2::j#1 ) [ nest2::i#4 nest2::j#2 ] + [21] (byte) nest2::j#2 ← phi( nest2::@1/(byte/signed byte/word/signed word) 100 nest2::@2/(byte) nest2::j#1 ) [ nest2::i#4 nest2::j#2 ] [22] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 [ nest2::i#4 nest2::j#2 ] [23] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] - [24] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] + [24] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 [25] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] - [26] if((byte) nest2::i#1>(byte) 0) goto nest2::@1 [ nest2::i#1 ] + [26] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 [ nest2::i#1 ] to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 [27] return [ ] @@ -1761,19 +1761,19 @@ main: scope:[main] from @3 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@3 - [2] (byte) main::i#5 ← phi( main/(byte) 100 main::@3/(byte) main::i#1 ) [ main::i#5 ] ( main:0 [ main::i#5 ] ) + [2] (byte) main::i#5 ← phi( main/(byte/signed byte/word/signed word) 100 main::@3/(byte) main::i#1 ) [ main::i#5 ] ( main:0 [ main::i#5 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@5 - [3] (byte) main::j#2 ← phi( main::@1/(byte) 100 main::@5/(byte) main::j#1 ) [ main::i#5 main::j#2 ] ( main:0 [ main::i#5 main::j#2 ] ) + [3] (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 100 main::@5/(byte) main::j#1 ) [ main::i#5 main::j#2 ] ( main:0 [ main::i#5 main::j#2 ] ) [4] call nest1 param-assignment [ main::i#5 main::j#2 ] ( main:0 [ main::i#5 main::j#2 ] ) to:main::@5 main::@5: scope:[main] from main::@2 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) - [6] if((byte) main::j#1>(byte) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) + [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) to:main::@3 main::@3: scope:[main] from main::@5 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [8] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@3 [9] return [ ] ( main:0 [ ] ) @@ -1782,19 +1782,19 @@ nest1: scope:[nest1] from main::@2 [10] phi() [ ] ( main:0::nest1:4 [ main::i#5 main::j#2 ] ) to:nest1::@1 nest1::@1: scope:[nest1] from nest1 nest1::@3 - [11] (byte) nest1::i#5 ← phi( nest1/(byte) 100 nest1::@3/(byte) nest1::i#1 ) [ nest1::i#5 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 ] ) + [11] (byte) nest1::i#5 ← phi( nest1/(byte/signed byte/word/signed word) 100 nest1::@3/(byte) nest1::i#1 ) [ nest1::i#5 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 ] ) to:nest1::@2 nest1::@2: scope:[nest1] from nest1::@1 nest1::@5 - [12] (byte) nest1::j#2 ← phi( nest1::@1/(byte) 100 nest1::@5/(byte) nest1::j#1 ) [ nest1::i#5 nest1::j#2 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) + [12] (byte) nest1::j#2 ← phi( nest1::@1/(byte/signed byte/word/signed word) 100 nest1::@5/(byte) nest1::j#1 ) [ nest1::i#5 nest1::j#2 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) [13] call nest2 param-assignment [ nest1::i#5 nest1::j#2 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) to:nest1::@5 nest1::@5: scope:[nest1] from nest1::@2 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) - [15] if((byte) nest1::j#1>(byte) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) + [15] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) to:nest1::@3 nest1::@3: scope:[nest1] from nest1::@5 [16] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) - [17] if((byte) nest1::i#1>(byte) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) + [17] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) to:nest1::@return nest1::@return: scope:[nest1] from nest1::@3 [18] return [ ] ( main:0::nest1:4 [ main::i#5 main::j#2 ] ) @@ -1803,17 +1803,17 @@ nest2: scope:[nest2] from nest1::@2 [19] phi() [ ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) to:nest2::@1 nest2::@1: scope:[nest2] from nest2 nest2::@3 - [20] (byte) nest2::i#4 ← phi( nest2/(byte) 100 nest2::@3/(byte) nest2::i#1 ) [ nest2::i#4 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 ] ) + [20] (byte) nest2::i#4 ← phi( nest2/(byte/signed byte/word/signed word) 100 nest2::@3/(byte) nest2::i#1 ) [ nest2::i#4 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 ] ) to:nest2::@2 nest2::@2: scope:[nest2] from nest2::@1 nest2::@2 - [21] (byte) nest2::j#2 ← phi( nest2::@1/(byte) 100 nest2::@2/(byte) nest2::j#1 ) [ nest2::i#4 nest2::j#2 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#2 ] ) + [21] (byte) nest2::j#2 ← phi( nest2::@1/(byte/signed byte/word/signed word) 100 nest2::@2/(byte) nest2::j#1 ) [ nest2::i#4 nest2::j#2 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#2 ] ) [22] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 [ nest2::i#4 nest2::j#2 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#2 ] ) [23] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) - [24] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) + [24] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) to:nest2::@3 nest2::@3: scope:[nest2] from nest2::@2 [25] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) - [26] if((byte) nest2::i#1>(byte) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) + [26] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) to:nest2::@return nest2::@return: scope:[nest2] from nest2::@3 [27] return [ ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 ] ) @@ -1821,25 +1821,25 @@ nest2::@return: scope:[nest2] from nest2::@3 DOMINATORS @begin dominated by @begin -@3 dominated by @3 @begin -@end dominated by @3 @end @begin -main dominated by @3 @begin main -main::@1 dominated by @3 @begin main::@1 main -main::@2 dominated by @3 @begin main::@2 main::@1 main -main::@5 dominated by @3 @begin main::@2 main::@1 main::@5 main -main::@3 dominated by @3 @begin main::@2 main::@1 main::@3 main main::@5 -main::@return dominated by @3 @begin main::@2 main::@1 main::@3 main main::@5 main::@return -nest1 dominated by @3 @begin main::@2 main::@1 main nest1 -nest1::@1 dominated by nest1::@1 @3 @begin main::@2 main::@1 main nest1 -nest1::@2 dominated by nest1::@1 nest1::@2 @3 @begin main::@2 main::@1 main nest1 -nest1::@5 dominated by nest1::@1 nest1::@2 @3 nest1::@5 @begin main::@2 main::@1 main nest1 -nest1::@3 dominated by nest1::@1 nest1::@2 @3 nest1::@5 nest1::@3 @begin main::@2 main::@1 main nest1 -nest1::@return dominated by nest1::@1 nest1::@2 @3 nest1::@5 nest1::@3 @begin nest1::@return main::@2 main::@1 main nest1 -nest2 dominated by nest1::@1 nest1::@2 @3 @begin main::@2 main::@1 main nest2 nest1 -nest2::@1 dominated by nest1::@1 nest1::@2 @3 @begin main::@2 main::@1 main nest2 nest2::@1 nest1 -nest2::@2 dominated by nest1::@1 nest1::@2 @3 @begin main::@2 main::@1 main nest2::@2 nest2 nest2::@1 nest1 -nest2::@3 dominated by nest1::@1 nest1::@2 @3 @begin main::@2 main::@1 main nest2::@3 nest2::@2 nest2 nest2::@1 nest1 -nest2::@return dominated by nest1::@1 nest1::@2 @3 nest2::@return @begin main::@2 main::@1 main nest2::@3 nest2::@2 nest2 nest2::@1 nest1 +@3 dominated by @begin @3 +@end dominated by @begin @end @3 +main dominated by @begin main @3 +main::@1 dominated by @begin main @3 main::@1 +main::@2 dominated by @begin main @3 main::@1 main::@2 +main::@5 dominated by @begin main @3 main::@1 main::@2 main::@5 +main::@3 dominated by @begin main @3 main::@1 main::@2 main::@5 main::@3 +main::@return dominated by main::@return @begin main @3 main::@1 main::@2 main::@5 main::@3 +nest1 dominated by @begin nest1 main @3 main::@1 main::@2 +nest1::@1 dominated by nest1::@1 @begin nest1 main @3 main::@1 main::@2 +nest1::@2 dominated by nest1::@1 nest1::@2 @begin nest1 main @3 main::@1 main::@2 +nest1::@5 dominated by nest1::@1 nest1::@2 @begin nest1 nest1::@5 main @3 main::@1 main::@2 +nest1::@3 dominated by nest1::@1 nest1::@2 @begin nest1 nest1::@5 nest1::@3 main @3 main::@1 main::@2 +nest1::@return dominated by nest1::@1 nest1::@2 @begin nest1 nest1::@5 nest1::@3 main nest1::@return @3 main::@1 main::@2 +nest2 dominated by nest1::@1 nest1::@2 @begin nest1 nest2 main @3 main::@1 main::@2 +nest2::@1 dominated by nest1::@1 nest1::@2 @begin nest1 nest2 main nest2::@1 @3 main::@1 main::@2 +nest2::@2 dominated by nest1::@1 nest1::@2 @begin nest1 nest2 main nest2::@1 @3 nest2::@2 main::@1 main::@2 +nest2::@3 dominated by nest1::@1 nest1::@2 @begin nest1 nest2 main nest2::@1 @3 nest2::@3 nest2::@2 main::@1 main::@2 +nest2::@return dominated by nest1::@1 nest1::@2 @begin nest1 nest2 main nest2::@return nest2::@1 @3 nest2::@3 nest2::@2 main::@1 main::@2 Found back edge: Loop head: main::@2 tails: main::@5 blocks: null Found back edge: Loop head: main::@1 tails: main::@3 blocks: null @@ -1949,7 +1949,7 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#5 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#5 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -1961,7 +1961,7 @@ main: { b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG14 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 @@ -1980,7 +1980,7 @@ main: { b5: //SEG21 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG22 [6] if((byte) main::j#1>(byte) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 + //SEG22 [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 lda j bne b2_from_b5 jmp b3 @@ -1988,7 +1988,7 @@ main: { b3: //SEG24 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG25 [8] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG25 [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn @@ -2003,7 +2003,7 @@ nest1: { .label i = 4 //SEG29 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] b1_from_nest1: - //SEG30 [11] phi (byte) nest1::i#5 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 + //SEG30 [11] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -2015,7 +2015,7 @@ nest1: { b1: //SEG34 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] b2_from_b1: - //SEG35 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- zpby1=coby1 + //SEG35 [12] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest1::@1->nest1::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 @@ -2034,7 +2034,7 @@ nest1: { b5: //SEG42 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG43 [15] if((byte) nest1::j#1>(byte) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- zpby1_gt_0_then_la1 + //SEG43 [15] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- zpby1_gt_0_then_la1 lda j bne b2_from_b5 jmp b3 @@ -2042,7 +2042,7 @@ nest1: { b3: //SEG45 [16] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG46 [17] if((byte) nest1::i#1>(byte) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG46 [17] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn @@ -2057,7 +2057,7 @@ nest2: { .label i = 6 //SEG50 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] b1_from_nest2: - //SEG51 [20] phi (byte) nest2::i#4 = (byte) 100 [phi:nest2->nest2::@1#0] -- zpby1=coby1 + //SEG51 [20] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word) 100 [phi:nest2->nest2::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -2069,7 +2069,7 @@ nest2: { b1: //SEG55 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] b2_from_b1: - //SEG56 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- zpby1=coby1 + //SEG56 [21] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest2::@1->nest2::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 @@ -2084,7 +2084,7 @@ nest2: { sta SCREEN //SEG61 [23] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG62 [24] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- zpby1_gt_0_then_la1 + //SEG62 [24] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- zpby1_gt_0_then_la1 lda j bne b2_from_b2 jmp b3 @@ -2092,7 +2092,7 @@ nest2: { b3: //SEG64 [25] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG65 [26] if((byte) nest2::i#1>(byte) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG65 [26] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1_from_b3 jmp breturn @@ -2166,7 +2166,7 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#5 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#5 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -2177,7 +2177,7 @@ main: { b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG14 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 @@ -2194,14 +2194,14 @@ main: { b5: //SEG21 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG22 [6] if((byte) main::j#1>(byte) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 + //SEG22 [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 lda j bne b2_from_b5 //SEG23 main::@3 b3: //SEG24 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG25 [8] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG25 [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1_from_b3 //SEG26 main::@return @@ -2214,7 +2214,7 @@ nest1: { .label i = 4 //SEG29 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] b1_from_nest1: - //SEG30 [11] phi (byte) nest1::i#5 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 + //SEG30 [11] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -2225,7 +2225,7 @@ nest1: { b1: //SEG34 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] b2_from_b1: - //SEG35 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 + //SEG35 [12] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 jmp b2 //SEG36 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] @@ -2242,14 +2242,14 @@ nest1: { //SEG42 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby=_dec_aby sec sbc #1 - //SEG43 [15] if((byte) nest1::j#1>(byte) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 + //SEG43 [15] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 cmp #0 bne b2_from_b5 //SEG44 nest1::@3 b3: //SEG45 [16] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG46 [17] if((byte) nest1::i#1>(byte) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG46 [17] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1_from_b3 //SEG47 nest1::@return @@ -2261,7 +2261,7 @@ nest1: { nest2: { //SEG50 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] b1_from_nest2: - //SEG51 [20] phi (byte) nest2::i#4 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 + //SEG51 [20] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 jmp b1 //SEG52 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] @@ -2271,7 +2271,7 @@ nest2: { b1: //SEG55 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] b2_from_b1: - //SEG56 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 + //SEG56 [21] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 jmp b2 //SEG57 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] @@ -2283,14 +2283,14 @@ nest2: { sty SCREEN //SEG61 [23] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby=_dec_yby dey - //SEG62 [24] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 + //SEG62 [24] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b2_from_b2 //SEG63 nest2::@3 b3: //SEG64 [25] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby=_dec_xby dex - //SEG65 [26] if((byte) nest2::i#1>(byte) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 + //SEG65 [26] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1_from_b3 //SEG66 nest2::@return @@ -2340,7 +2340,7 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#5 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#5 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -2349,7 +2349,7 @@ main: { //SEG12 main::@1 b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG14 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 @@ -2364,14 +2364,14 @@ main: { b5: //SEG21 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG22 [6] if((byte) main::j#1>(byte) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 + //SEG22 [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 lda j bne b2 //SEG23 main::@3 b3: //SEG24 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG25 [8] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG25 [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1 //SEG26 main::@return @@ -2384,7 +2384,7 @@ nest1: { .label i = 4 //SEG29 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] b1_from_nest1: - //SEG30 [11] phi (byte) nest1::i#5 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 + //SEG30 [11] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -2393,7 +2393,7 @@ nest1: { //SEG33 nest1::@1 b1: //SEG34 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] - //SEG35 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 + //SEG35 [12] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 jmp b2 //SEG36 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] @@ -2408,14 +2408,14 @@ nest1: { //SEG42 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby=_dec_aby sec sbc #1 - //SEG43 [15] if((byte) nest1::j#1>(byte) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 + //SEG43 [15] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 cmp #0 bne b2 //SEG44 nest1::@3 b3: //SEG45 [16] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG46 [17] if((byte) nest1::i#1>(byte) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG46 [17] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1 //SEG47 nest1::@return @@ -2427,7 +2427,7 @@ nest1: { nest2: { //SEG50 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] b1_from_nest2: - //SEG51 [20] phi (byte) nest2::i#4 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 + //SEG51 [20] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 jmp b1 //SEG52 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] @@ -2435,7 +2435,7 @@ nest2: { //SEG54 nest2::@1 b1: //SEG55 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] - //SEG56 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 + //SEG56 [21] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 jmp b2 //SEG57 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] @@ -2446,14 +2446,14 @@ nest2: { sty SCREEN //SEG61 [23] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby=_dec_yby dey - //SEG62 [24] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 + //SEG62 [24] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b2 //SEG63 nest2::@3 b3: //SEG64 [25] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby=_dec_xby dex - //SEG65 [26] if((byte) nest2::i#1>(byte) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 + //SEG65 [26] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG66 nest2::@return @@ -2494,7 +2494,7 @@ main: { .label j = 3 .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#5 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#5 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -2503,7 +2503,7 @@ main: { //SEG12 main::@1 b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG14 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 @@ -2517,13 +2517,13 @@ main: { //SEG20 main::@5 //SEG21 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG22 [6] if((byte) main::j#1>(byte) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 + //SEG22 [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 lda j bne b2 //SEG23 main::@3 //SEG24 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG25 [8] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG25 [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1 //SEG26 main::@return @@ -2534,7 +2534,7 @@ main: { nest1: { .label i = 4 //SEG29 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] - //SEG30 [11] phi (byte) nest1::i#5 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 + //SEG30 [11] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -2543,7 +2543,7 @@ nest1: { //SEG33 nest1::@1 b1: //SEG34 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] - //SEG35 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 + //SEG35 [12] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 jmp b2 //SEG36 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] @@ -2557,13 +2557,13 @@ nest1: { //SEG42 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby=_dec_aby sec sbc #1 - //SEG43 [15] if((byte) nest1::j#1>(byte) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 + //SEG43 [15] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 cmp #0 bne b2 //SEG44 nest1::@3 //SEG45 [16] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG46 [17] if((byte) nest1::i#1>(byte) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG46 [17] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1 //SEG47 nest1::@return @@ -2573,7 +2573,7 @@ nest1: { //SEG49 nest2 nest2: { //SEG50 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] - //SEG51 [20] phi (byte) nest2::i#4 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 + //SEG51 [20] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 jmp b1 //SEG52 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] @@ -2581,7 +2581,7 @@ nest2: { //SEG54 nest2::@1 b1: //SEG55 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] - //SEG56 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 + //SEG56 [21] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 jmp b2 //SEG57 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] @@ -2592,13 +2592,13 @@ nest2: { sty SCREEN //SEG61 [23] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby=_dec_yby dey - //SEG62 [24] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 + //SEG62 [24] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b2 //SEG63 nest2::@3 //SEG64 [25] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby=_dec_xby dex - //SEG65 [26] if((byte) nest2::i#1>(byte) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 + //SEG65 [26] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG66 nest2::@return @@ -2631,7 +2631,7 @@ main: { .label j = 3 .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#5 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#5 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i //SEG10 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] @@ -2639,7 +2639,7 @@ main: { //SEG12 main::@1 b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG14 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j //SEG15 [3] phi from main::@5 to main::@2 [phi:main::@5->main::@2] @@ -2652,13 +2652,13 @@ main: { //SEG20 main::@5 //SEG21 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG22 [6] if((byte) main::j#1>(byte) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 + //SEG22 [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 lda j bne b2 //SEG23 main::@3 //SEG24 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG25 [8] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG25 [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1 //SEG26 main::@return @@ -2669,7 +2669,7 @@ main: { nest1: { .label i = 4 //SEG29 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] - //SEG30 [11] phi (byte) nest1::i#5 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 + //SEG30 [11] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i //SEG31 [11] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] @@ -2677,7 +2677,7 @@ nest1: { //SEG33 nest1::@1 b1: //SEG34 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] - //SEG35 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 + //SEG35 [12] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 //SEG36 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] //SEG37 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy @@ -2690,13 +2690,13 @@ nest1: { //SEG42 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby=_dec_aby sec sbc #1 - //SEG43 [15] if((byte) nest1::j#1>(byte) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 + //SEG43 [15] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 cmp #0 bne b2 //SEG44 nest1::@3 //SEG45 [16] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG46 [17] if((byte) nest1::i#1>(byte) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG46 [17] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1 //SEG47 nest1::@return @@ -2706,14 +2706,14 @@ nest1: { //SEG49 nest2 nest2: { //SEG50 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] - //SEG51 [20] phi (byte) nest2::i#4 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 + //SEG51 [20] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 //SEG52 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] //SEG53 [20] phi (byte) nest2::i#4 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy //SEG54 nest2::@1 b1: //SEG55 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] - //SEG56 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 + //SEG56 [21] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 //SEG57 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] //SEG58 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy @@ -2723,13 +2723,13 @@ nest2: { sty SCREEN //SEG61 [23] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby=_dec_yby dey - //SEG62 [24] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 + //SEG62 [24] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b2 //SEG63 nest2::@3 //SEG64 [25] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby=_dec_xby dex - //SEG65 [26] if((byte) nest2::i#1>(byte) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 + //SEG65 [26] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG66 nest2::@return @@ -2742,7 +2742,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -2804,7 +2804,7 @@ main: { .label j = 3 .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#5 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#5 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i //SEG10 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] @@ -2812,7 +2812,7 @@ main: { //SEG12 main::@1 b1: //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG14 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 + //SEG14 [3] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j //SEG15 [3] phi from main::@5 to main::@2 [phi:main::@5->main::@2] @@ -2825,13 +2825,13 @@ main: { //SEG20 main::@5 //SEG21 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1=_dec_zpby1 dec j - //SEG22 [6] if((byte) main::j#1>(byte) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 + //SEG22 [6] if((byte) main::j#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::i#5 main::j#1 ] ( main:0 [ main::i#5 main::j#1 ] ) -- zpby1_gt_0_then_la1 lda j bne b2 //SEG23 main::@3 //SEG24 [7] (byte) main::i#1 ← -- (byte) main::i#5 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG25 [8] if((byte) main::i#1>(byte) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG25 [8] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1 //SEG26 main::@return @@ -2842,7 +2842,7 @@ main: { nest1: { .label i = 4 //SEG29 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] - //SEG30 [11] phi (byte) nest1::i#5 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 + //SEG30 [11] phi (byte) nest1::i#5 = (byte/signed byte/word/signed word) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i //SEG31 [11] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] @@ -2850,7 +2850,7 @@ nest1: { //SEG33 nest1::@1 b1: //SEG34 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] - //SEG35 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 + //SEG35 [12] phi (byte) nest1::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 //SEG36 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] //SEG37 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy @@ -2863,13 +2863,13 @@ nest1: { //SEG42 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby=_dec_aby sec sbc #1 - //SEG43 [15] if((byte) nest1::j#1>(byte) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 + //SEG43 [15] if((byte) nest1::j#1>(byte/signed byte/word/signed word) 0) goto nest1::@2 [ nest1::i#5 nest1::j#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#5 nest1::j#1 ] ) -- aby_gt_0_then_la1 cmp #0 bne b2 //SEG44 nest1::@3 //SEG45 [16] (byte) nest1::i#1 ← -- (byte) nest1::i#5 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG46 [17] if((byte) nest1::i#1>(byte) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG46 [17] if((byte) nest1::i#1>(byte/signed byte/word/signed word) 0) goto nest1::@1 [ nest1::i#1 ] ( main:0::nest1:4 [ main::i#5 main::j#2 nest1::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b1 //SEG47 nest1::@return @@ -2879,14 +2879,14 @@ nest1: { //SEG49 nest2 nest2: { //SEG50 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] - //SEG51 [20] phi (byte) nest2::i#4 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 + //SEG51 [20] phi (byte) nest2::i#4 = (byte/signed byte/word/signed word) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 //SEG52 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] //SEG53 [20] phi (byte) nest2::i#4 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy //SEG54 nest2::@1 b1: //SEG55 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] - //SEG56 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 + //SEG56 [21] phi (byte) nest2::j#2 = (byte/signed byte/word/signed word) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 //SEG57 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] //SEG58 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy @@ -2896,13 +2896,13 @@ nest2: { sty SCREEN //SEG61 [23] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby=_dec_yby dey - //SEG62 [24] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 + //SEG62 [24] if((byte) nest2::j#1>(byte/signed byte/word/signed word) 0) goto nest2::@2 [ nest2::i#4 nest2::j#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#4 nest2::j#1 ] ) -- yby_gt_0_then_la1 cpy #0 bne b2 //SEG63 nest2::@3 //SEG64 [25] (byte) nest2::i#1 ← -- (byte) nest2::i#4 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby=_dec_xby dex - //SEG65 [26] if((byte) nest2::i#1>(byte) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 + //SEG65 [26] if((byte) nest2::i#1>(byte/signed byte/word/signed word) 0) goto nest2::@1 [ nest2::i#1 ] ( main:0::nest1:4::nest2:13 [ main::i#5 main::j#2 nest1::i#5 nest1::j#2 nest2::i#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b1 //SEG66 nest2::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.sym b/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.sym index 06b8e533f..2a43fd89f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.cfg b/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.cfg index 05c6987d5..2033dfbb2 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.cfg @@ -8,16 +8,16 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 - [2] (byte) main::s#3 ← phi( main/(byte) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) [ main::i#2 main::s#3 ] ( main:0 [ main::i#2 main::s#3 ] ) - [2] (byte) main::i#2 ← phi( main/(byte) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) [ main::i#2 main::s#3 ] ( main:0 [ main::i#2 main::s#3 ] ) + [2] (byte) main::s#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) [ main::i#2 main::s#3 ] ( main:0 [ main::i#2 main::s#3 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) [ main::i#2 main::s#3 ] ( main:0 [ main::i#2 main::s#3 ] ) [3] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) - [4] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) + [4] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [5] return [ ] ( main:0 [ ] ) to:@return main::@2: scope:[main] from main::@1 - [6] if((byte) main::i#1<=(byte) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) + [6] if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) to:main::@8 main::@8: scope:[main] from main::@2 [7] (byte) main::s#2 ← ++ (byte) main::s#3 [ main::i#1 main::s#2 ] ( main:0 [ main::i#1 main::s#2 ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.log b/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.log index 4ba9cab92..8ba800da9 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.log @@ -15,15 +15,15 @@ Adding pre/post-modifier (byte) main::s ← ++ (byte) main::s Adding pre/post-modifier (byte) main::s ← -- (byte) main::s PROGRAM proc (void()) main() - (byte) main::i ← (byte) 100 - (byte) main::s ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 100 + (byte) main::s ← (byte/signed byte/word/signed word) 0 main::@1: (byte) main::i ← -- (byte) main::i - (boolean~) main::$0 ← (byte) main::i > (byte) 0 + (boolean~) main::$0 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@2 goto main::@3 main::@2: - (boolean~) main::$1 ← (byte) main::i > (byte) 50 + (boolean~) main::$1 ← (byte) main::i > (byte/signed byte/word/signed word) 50 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@4 (byte) main::s ← ++ (byte) main::s @@ -56,16 +56,16 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte) main::i ← (byte) 100 - (byte) main::s ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 100 + (byte) main::s ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i ← -- (byte) main::i - (boolean~) main::$0 ← (byte) main::i > (byte) 0 + (boolean~) main::$0 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@2 to:main::@6 main::@2: scope:[main] from main::@1 main::@7 - (boolean~) main::$1 ← (byte) main::i > (byte) 50 + (boolean~) main::$1 ← (byte) main::i > (byte/signed byte/word/signed word) 50 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@4 to:main::@8 @@ -105,16 +105,16 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte) main::i ← (byte) 100 - (byte) main::s ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 100 + (byte) main::s ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 (byte) main::i ← -- (byte) main::i - (boolean~) main::$0 ← (byte) main::i > (byte) 0 + (boolean~) main::$0 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (boolean~) main::$1 ← (byte) main::i > (byte) 50 + (boolean~) main::$1 ← (byte) main::i > (byte/signed byte/word/signed word) 50 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@4 to:main::@8 @@ -138,16 +138,16 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i ← (byte) 100 - (byte) main::s ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 100 + (byte) main::s ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 (byte) main::i ← -- (byte) main::i - (boolean~) main::$0 ← (byte) main::i > (byte) 0 + (boolean~) main::$0 ← (byte) main::i > (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (boolean~) main::$1 ← (byte) main::i > (byte) 50 + (boolean~) main::$1 ← (byte) main::i > (byte/signed byte/word/signed word) 50 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@4 to:main::@8 @@ -174,20 +174,20 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 100 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 (byte) main::s#6 ← phi( main/(byte) main::s#0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#4 main::@8/(byte) main::i#5 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte) main::s#5 ← phi( main::@1/(byte) main::s#6 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#3 > (byte) 50 + (boolean~) main::$1 ← (byte) main::i#3 > (byte/signed byte/word/signed word) 50 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@4 to:main::@8 @@ -215,20 +215,20 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 100 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 (byte) main::s#6 ← phi( main/(byte) main::s#0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#4 main::@8/(byte) main::i#5 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte) main::s#5 ← phi( main::@1/(byte) main::s#6 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#3 > (byte) 50 + (boolean~) main::$1 ← (byte) main::i#3 > (byte/signed byte/word/signed word) 50 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@4 to:main::@8 @@ -288,20 +288,20 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 100 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 (byte) main::s#6 ← phi( main/(byte) main::s#0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#4 main::@8/(byte) main::i#5 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte) main::s#5 ← phi( main::@1/(byte) main::s#6 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#1 ) - (boolean~) main::$1 ← (byte) main::i#3 > (byte) 50 + (boolean~) main::$1 ← (byte) main::i#3 > (byte/signed byte/word/signed word) 50 (boolean~) main::$2 ← ! (boolean~) main::$1 if((boolean~) main::$2) goto main::@4 to:main::@8 @@ -323,26 +323,26 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$2 ← (byte) main::i#3 <= (byte) 50 from (boolean~) main::$1 ← (byte) main::i#3 > (byte) 50 +Inversing boolean not (boolean~) main::$2 ← (byte) main::i#3 <= (byte/signed byte/word/signed word) 50 from (boolean~) main::$1 ← (byte) main::i#3 > (byte/signed byte/word/signed word) 50 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 100 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 (byte) main::s#6 ← phi( main/(byte) main::s#0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#4 main::@8/(byte) main::i#5 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte) main::s#5 ← phi( main::@1/(byte) main::s#6 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#1 ) - (boolean~) main::$2 ← (byte) main::i#3 <= (byte) 50 + (boolean~) main::$2 ← (byte) main::i#3 <= (byte/signed byte/word/signed word) 50 if((boolean~) main::$2) goto main::@4 to:main::@8 main::@4: scope:[main] from main::@2 @@ -370,18 +370,18 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 100 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 (byte) main::s#3 ← phi( main/(byte) main::s#0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) (byte) main::i#1 ← -- (byte) main::i#2 - (boolean~) main::$0 ← (byte) main::i#1 > (byte) 0 + (boolean~) main::$0 ← (byte) main::i#1 > (byte/signed byte/word/signed word) 0 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (boolean~) main::$2 ← (byte) main::i#1 <= (byte) 50 + (boolean~) main::$2 ← (byte) main::i#1 <= (byte/signed byte/word/signed word) 50 if((boolean~) main::$2) goto main::@4 to:main::@8 main::@4: scope:[main] from main::@2 @@ -398,24 +398,24 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$0 if((byte) main::i#1>(byte) 0) goto main::@2 -Simple Condition (boolean~) main::$2 if((byte) main::i#1<=(byte) 50) goto main::@4 +Simple Condition (boolean~) main::$0 if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 +Simple Condition (boolean~) main::$2 if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::i#0 ← (byte) 100 - (byte) main::s#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 + (byte) main::s#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 (byte) main::s#3 ← phi( main/(byte) main::s#0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@2 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - if((byte) main::i#1<=(byte) 50) goto main::@4 + if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 to:main::@8 main::@4: scope:[main] from main::@2 (byte) main::s#1 ← -- (byte) main::s#3 @@ -443,10 +443,10 @@ main::@1: scope:[main] from main main::@4 main::@8 (byte) main::s#3 ← phi( main/(const byte) main::s#0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@2 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - if((byte) main::i#1<=(byte) 50) goto main::@4 + if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 to:main::@8 main::@4: scope:[main] from main::@2 (byte) main::s#1 ← -- (byte) main::s#3 @@ -467,8 +467,8 @@ Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::s#0 Inlining constant with var siblings (const byte) main::s#0 Inlining constant with var siblings (const byte) main::s#0 -Constant inlined main::s#0 = (byte) 0 -Constant inlined main::i#0 = (byte) 100 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 100 +Constant inlined main::s#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -476,13 +476,13 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 - (byte) main::s#3 ← phi( main/(byte) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) - (byte) main::i#2 ← phi( main/(byte) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) + (byte) main::s#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@2 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - if((byte) main::i#1<=(byte) 50) goto main::@4 + if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 to:main::@8 main::@4: scope:[main] from main::@2 (byte) main::s#1 ← -- (byte) main::s#3 @@ -528,16 +528,16 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 - (byte) main::s#3 ← phi( main/(byte) 0 main::@4/(byte~) main::s#7 main::@8/(byte~) main::s#8 ) - (byte) main::i#2 ← phi( main/(byte) 100 main::@4/(byte~) main::i#6 main::@8/(byte~) main::i#7 ) + (byte) main::s#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte~) main::s#7 main::@8/(byte~) main::s#8 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@4/(byte~) main::i#6 main::@8/(byte~) main::i#7 ) (byte) main::i#1 ← -- (byte) main::i#2 - if((byte) main::i#1>(byte) 0) goto main::@2 + if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 to:main::@return main::@return: scope:[main] from main::@1 return to:@return main::@2: scope:[main] from main::@1 - if((byte) main::i#1<=(byte) 50) goto main::@4 + if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::s#2 ← ++ (byte) main::s#3 @@ -570,16 +570,16 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 - [2] (byte) main::s#3 ← phi( main/(byte) 0 main::@4/(byte~) main::s#7 main::@8/(byte~) main::s#8 ) [ main::i#2 main::s#3 ] - [2] (byte) main::i#2 ← phi( main/(byte) 100 main::@4/(byte~) main::i#6 main::@8/(byte~) main::i#7 ) [ main::i#2 main::s#3 ] + [2] (byte) main::s#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte~) main::s#7 main::@8/(byte~) main::s#8 ) [ main::i#2 main::s#3 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@4/(byte~) main::i#6 main::@8/(byte~) main::i#7 ) [ main::i#2 main::s#3 ] [3] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#3 main::i#1 ] - [4] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::s#3 main::i#1 ] + [4] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::s#3 main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [5] return [ ] to:@return main::@2: scope:[main] from main::@1 - [6] if((byte) main::i#1<=(byte) 50) goto main::@4 [ main::s#3 main::i#1 ] + [6] if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 [ main::s#3 main::i#1 ] to:main::@8 main::@8: scope:[main] from main::@2 [7] (byte) main::s#2 ← ++ (byte) main::s#3 [ main::i#1 main::s#2 ] @@ -616,16 +616,16 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 - [2] (byte) main::s#3 ← phi( main/(byte) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) [ main::i#2 main::s#3 ] - [2] (byte) main::i#2 ← phi( main/(byte) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) [ main::i#2 main::s#3 ] + [2] (byte) main::s#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) [ main::i#2 main::s#3 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) [ main::i#2 main::s#3 ] [3] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#3 main::i#1 ] - [4] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::s#3 main::i#1 ] + [4] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::s#3 main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 [5] return [ ] to:@return main::@2: scope:[main] from main::@1 - [6] if((byte) main::i#1<=(byte) 50) goto main::@4 [ main::s#3 main::i#1 ] + [6] if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 [ main::s#3 main::i#1 ] to:main::@8 main::@8: scope:[main] from main::@2 [7] (byte) main::s#2 ← ++ (byte) main::s#3 [ main::i#1 main::s#2 ] @@ -645,16 +645,16 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@4 main::@8 - [2] (byte) main::s#3 ← phi( main/(byte) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) [ main::i#2 main::s#3 ] ( main:0 [ main::i#2 main::s#3 ] ) - [2] (byte) main::i#2 ← phi( main/(byte) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) [ main::i#2 main::s#3 ] ( main:0 [ main::i#2 main::s#3 ] ) + [2] (byte) main::s#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) [ main::i#2 main::s#3 ] ( main:0 [ main::i#2 main::s#3 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) [ main::i#2 main::s#3 ] ( main:0 [ main::i#2 main::s#3 ] ) [3] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) - [4] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) + [4] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 [5] return [ ] ( main:0 [ ] ) to:@return main::@2: scope:[main] from main::@1 - [6] if((byte) main::i#1<=(byte) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) + [6] if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) to:main::@8 main::@8: scope:[main] from main::@2 [7] (byte) main::s#2 ← ++ (byte) main::s#3 [ main::i#1 main::s#2 ] ( main:0 [ main::i#1 main::s#2 ] ) @@ -666,13 +666,13 @@ main::@4: scope:[main] from main::@2 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@return dominated by @1 main::@return @begin main::@1 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@8 dominated by main::@8 @1 @begin main::@2 main::@1 main -main::@4 dominated by @1 @begin main::@2 main::@1 main::@4 main +main::@return dominated by main::@return @1 @begin main::@1 main +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@8 dominated by @1 @begin main::@8 main::@1 main::@2 main +main::@4 dominated by @1 @begin main::@1 main::@2 main main::@4 Found back edge: Loop head: main::@1 tails: main::@8 blocks: null Found back edge: Loop head: main::@1 tails: main::@4 blocks: null @@ -731,10 +731,10 @@ main: { .label s = 3 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::s#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta s - //SEG10 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- zpby1=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#1] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -742,7 +742,7 @@ main: { b1: //SEG12 [3] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- zpby1=_dec_zpby1 dec i - //SEG13 [4] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- zpby1_gt_0_then_la1 + //SEG13 [4] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- zpby1_gt_0_then_la1 lda i bne b2 jmp breturn @@ -752,7 +752,7 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [6] if((byte) main::i#1<=(byte) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- zpby1_le_coby1_then_la1 + //SEG17 [6] if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- zpby1_le_coby1_then_la1 lda i cmp #$32 bcc b4 @@ -811,15 +811,15 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::s#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG10 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#1] -- xby=coby1 ldx #$64 //SEG11 main::@1 b1: //SEG12 [3] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby=_dec_xby dex - //SEG13 [4] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_gt_0_then_la1 + //SEG13 [4] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b2 //SEG14 main::@return @@ -828,7 +828,7 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [6] if((byte) main::i#1<=(byte) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_le_coby1_then_la1 + //SEG17 [6] if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_le_coby1_then_la1 cpx #$32 bcc b4 beq b4 @@ -872,15 +872,15 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::s#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG10 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#1] -- xby=coby1 ldx #$64 //SEG11 main::@1 b1: //SEG12 [3] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby=_dec_xby dex - //SEG13 [4] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_gt_0_then_la1 + //SEG13 [4] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b2 //SEG14 main::@return @@ -889,7 +889,7 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [6] if((byte) main::i#1<=(byte) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_le_coby1_then_la1 + //SEG17 [6] if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_le_coby1_then_la1 cpx #$32 bcc b4 beq b4 @@ -930,15 +930,15 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::s#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG10 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#1] -- xby=coby1 ldx #$64 //SEG11 main::@1 b1: //SEG12 [3] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby=_dec_xby dex - //SEG13 [4] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_gt_0_then_la1 + //SEG13 [4] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b2 //SEG14 main::@return @@ -946,7 +946,7 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [6] if((byte) main::i#1<=(byte) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_le_coby1_then_la1 + //SEG17 [6] if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_le_coby1_then_la1 cpx #$32 bcc b4 beq b4 @@ -1001,15 +1001,15 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::s#3 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG10 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- xby=coby1 + //SEG10 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 100 [phi:main->main::@1#1] -- xby=coby1 ldx #$64 //SEG11 main::@1 b1: //SEG12 [3] (byte) main::i#1 ← -- (byte) main::i#2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby=_dec_xby dex - //SEG13 [4] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_gt_0_then_la1 + //SEG13 [4] if((byte) main::i#1>(byte/signed byte/word/signed word) 0) goto main::@2 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_gt_0_then_la1 cpx #0 bne b2 //SEG14 main::@return @@ -1017,7 +1017,7 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [6] if((byte) main::i#1<=(byte) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_le_coby1_then_la1 + //SEG17 [6] if((byte) main::i#1<=(byte/signed byte/word/signed word) 50) goto main::@4 [ main::s#3 main::i#1 ] ( main:0 [ main::s#3 main::i#1 ] ) -- xby_le_coby1_then_la1 cpx #$32 bcc b4 beq b4 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.cfg b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.cfg index c3e04c8f3..692d26b0a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.cfg @@ -10,21 +10,21 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [3] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ) - [4] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) + [4] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) [5] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 cnt2#1 cnt3#1 ] ( main:0 [ cnt#2 cnt2#1 cnt3#1 ] ) [6] call inccnt param-assignment [ inccnt::return#0 ] ( main:0 [ inccnt::return#0 ] ) to:main::@2 main::@2: scope:[main] from main::@1 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] ( main:0 [ main::$1 ] ) - [8] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) + [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main::@2 [9] return [ ] ( main:0 [ ] ) to:@return inccnt: scope:[inccnt] from main main::@1 - [10] (byte) cnt3#10 ← phi( main/(byte) 0 main::@1/(byte) cnt3#1 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) - [10] (byte) cnt2#10 ← phi( main/(byte) 0 main::@1/(byte) cnt2#1 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) - [10] (byte) cnt#11 ← phi( main/(byte) 0 main::@1/(byte) cnt#2 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) + [10] (byte) cnt3#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt3#1 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) + [10] (byte) cnt2#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt2#1 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) + [10] (byte) cnt#11 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt#2 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) [11] (byte) cnt#1 ← ++ (byte) cnt#11 [ cnt#1 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#1 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#1 cnt2#10 cnt3#10 ] ) [12] (byte) cnt2#1 ← ++ (byte) cnt2#10 [ cnt#1 cnt3#10 cnt2#1 ] ( main:0::inccnt:2 [ cnt#1 cnt3#10 cnt2#1 ] main:0::inccnt:6 [ cnt#1 cnt3#10 cnt2#1 ] ) [13] (byte) cnt3#1 ← ++ (byte) cnt3#10 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0::inccnt:2 [ cnt#1 cnt2#1 cnt3#1 ] main:0::inccnt:6 [ cnt#1 cnt2#1 cnt3#1 ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log index 15bd4b075..a5b7cda67 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log @@ -24,16 +24,16 @@ Adding pre/post-modifier (byte) cnt ← ++ (byte) cnt Adding pre/post-modifier (byte) cnt2 ← ++ (byte) cnt2 Adding pre/post-modifier (byte) cnt3 ← ++ (byte) cnt3 PROGRAM - (byte) cnt ← (byte) 0 - (byte) cnt2 ← (byte) 0 - (byte) cnt3 ← (byte) 0 - (byte[256]) SCREEN ← (word) 1024 + (byte) cnt ← (byte/signed byte/word/signed word) 0 + (byte) cnt2 ← (byte/signed byte/word/signed word) 0 + (byte) cnt3 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN ← (word/signed word) 1024 proc (void()) main() (byte~) main::$0 ← call inccnt - *((byte[256]) SCREEN + (byte) 0) ← (byte~) main::$0 + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt ← ++ (byte) cnt (byte~) main::$1 ← call inccnt - *((byte[256]) SCREEN + (byte) 1) ← (byte~) main::$1 + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1 main::@return: return endproc // main() @@ -64,17 +64,17 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte) cnt ← (byte) 0 - (byte) cnt2 ← (byte) 0 - (byte) cnt3 ← (byte) 0 - (byte[256]) SCREEN ← (word) 1024 + (byte) cnt ← (byte/signed byte/word/signed word) 0 + (byte) cnt2 ← (byte/signed byte/word/signed word) 0 + (byte) cnt3 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from (byte~) main::$0 ← call inccnt - *((byte[256]) SCREEN + (byte) 0) ← (byte~) main::$0 + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt ← ++ (byte) cnt (byte~) main::$1 ← call inccnt - *((byte[256]) SCREEN + (byte) 1) ← (byte~) main::$1 + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main return @@ -102,17 +102,17 @@ Removing empty block @1 Removing empty block inccnt::@1 CONTROL FLOW GRAPH @begin: scope:[] from - (byte) cnt ← (byte) 0 - (byte) cnt2 ← (byte) 0 - (byte) cnt3 ← (byte) 0 - (byte[256]) SCREEN ← (word) 1024 + (byte) cnt ← (byte/signed byte/word/signed word) 0 + (byte) cnt2 ← (byte/signed byte/word/signed word) 0 + (byte) cnt3 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN ← (word/signed word) 1024 to:@2 main: scope:[main] from (byte~) main::$0 ← call inccnt - *((byte[256]) SCREEN + (byte) 0) ← (byte~) main::$0 + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt ← ++ (byte) cnt (byte~) main::$1 ← call inccnt - *((byte[256]) SCREEN + (byte) 1) ← (byte~) main::$1 + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main return @@ -142,10 +142,10 @@ inccnt modifies cnt3 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte) cnt ← (byte) 0 - (byte) cnt2 ← (byte) 0 - (byte) cnt3 ← (byte) 0 - (byte[256]) SCREEN ← (word) 1024 + (byte) cnt ← (byte/signed byte/word/signed word) 0 + (byte) cnt2 ← (byte/signed byte/word/signed word) 0 + (byte) cnt3 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) inccnt::return ← call inccnt param-assignment @@ -155,7 +155,7 @@ main::@1: scope:[main] from main (byte) cnt ← (byte) cnt (byte) cnt2 ← (byte) cnt2 (byte) cnt3 ← (byte) cnt3 - *((byte[256]) SCREEN + (byte) 0) ← (byte~) main::$0 + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt ← ++ (byte) cnt (byte) inccnt::return ← call inccnt param-assignment to:main::@2 @@ -164,7 +164,7 @@ main::@2: scope:[main] from main::@1 (byte) cnt ← (byte) cnt (byte) cnt2 ← (byte) cnt2 (byte) cnt3 ← (byte) cnt3 - *((byte[256]) SCREEN + (byte) 1) ← (byte~) main::$1 + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 (byte) cnt ← (byte) cnt @@ -200,10 +200,10 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte) cnt#0 ← (byte) 0 - (byte) cnt2#0 ← (byte) 0 - (byte) cnt3#0 ← (byte) 0 - (byte[256]) SCREEN#0 ← (word) 1024 + (byte) cnt#0 ← (byte/signed byte/word/signed word) 0 + (byte) cnt2#0 ← (byte/signed byte/word/signed word) 0 + (byte) cnt3#0 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) @@ -222,7 +222,7 @@ main::@1: scope:[main] from main (byte) cnt#1 ← (byte) cnt#8 (byte) cnt2#1 ← (byte) cnt2#7 (byte) cnt3#1 ← (byte) cnt3#7 - *((byte[256]) SCREEN#1 + (byte) 0) ← (byte~) main::$0 + *((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt#2 ← ++ (byte) cnt#1 (byte) inccnt::return#1 ← call inccnt param-assignment to:main::@2 @@ -236,7 +236,7 @@ main::@2: scope:[main] from main::@1 (byte) cnt#3 ← (byte) cnt#9 (byte) cnt2#2 ← (byte) cnt2#8 (byte) cnt3#2 ← (byte) cnt3#8 - *((byte[256]) SCREEN#2 + (byte) 1) ← (byte~) main::$1 + *((byte[256]) SCREEN#2 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 (byte) cnt3#9 ← phi( main::@2/(byte) cnt3#2 ) @@ -286,10 +286,10 @@ inccnt::@return: scope:[inccnt] from inccnt CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte) cnt#0 ← (byte) 0 - (byte) cnt2#0 ← (byte) 0 - (byte) cnt3#0 ← (byte) 0 - (byte[256]) SCREEN#0 ← (word) 1024 + (byte) cnt#0 ← (byte/signed byte/word/signed word) 0 + (byte) cnt2#0 ← (byte/signed byte/word/signed word) 0 + (byte) cnt3#0 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) @@ -309,7 +309,7 @@ main::@1: scope:[main] from main (byte) cnt#1 ← (byte) cnt#8 (byte) cnt2#1 ← (byte) cnt2#7 (byte) cnt3#1 ← (byte) cnt3#7 - *((byte[256]) SCREEN#1 + (byte) 0) ← (byte~) main::$0 + *((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment (byte) inccnt::return#1 ← (byte) inccnt::return#3 @@ -324,7 +324,7 @@ main::@2: scope:[main] from main::@1 (byte) cnt#3 ← (byte) cnt#9 (byte) cnt2#2 ← (byte) cnt2#8 (byte) cnt3#2 ← (byte) cnt3#8 - *((byte[256]) SCREEN#2 + (byte) 1) ← (byte~) main::$1 + *((byte[256]) SCREEN#2 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 (byte) cnt3#9 ← phi( main::@2/(byte) cnt3#2 ) @@ -463,23 +463,23 @@ Alias (byte) cnt3#1 = (byte) cnt3#7 (byte) cnt3#5 (byte) cnt3#8 (byte) cnt3#2 (b Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte) cnt#0 ← (byte) 0 - (byte) cnt2#0 ← (byte) 0 - (byte) cnt3#0 ← (byte) 0 - (byte[256]) SCREEN#0 ← (word) 1024 + (byte) cnt#0 ← (byte/signed byte/word/signed word) 0 + (byte) cnt2#0 ← (byte/signed byte/word/signed word) 0 + (byte) cnt3#0 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 call inccnt param-assignment to:main::@1 main::@1: scope:[main] from main (byte~) main::$0 ← (byte) inccnt::return#0 - *((byte[256]) SCREEN#0 + (byte) 0) ← (byte~) main::$0 + *((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte~) main::$1 ← (byte) inccnt::return#0 - *((byte[256]) SCREEN#0 + (byte) 1) ← (byte~) main::$1 + *((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 return @@ -519,13 +519,13 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main (byte~) main::$0 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0 + (byte) 0) ← (byte~) main::$0 + *((const byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte~) main::$1 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0 + (byte) 1) ← (byte~) main::$1 + *((const byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 return @@ -560,13 +560,13 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main (byte~) main::$0 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte~) main::$1 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 return @@ -600,13 +600,13 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main (byte~) main::$0 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte~) main::$1 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 return @@ -641,9 +641,9 @@ Inlining constant with var siblings (const byte) cnt2#0 Inlining constant with var siblings (const byte) cnt2#0 Inlining constant with var siblings (const byte) cnt3#0 Inlining constant with var siblings (const byte) cnt3#0 -Constant inlined cnt#0 = (byte) 0 -Constant inlined cnt3#0 = (byte) 0 -Constant inlined cnt2#0 = (byte) 0 +Constant inlined cnt#0 = (byte/signed byte/word/signed word) 0 +Constant inlined cnt3#0 = (byte/signed byte/word/signed word) 0 +Constant inlined cnt2#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -653,21 +653,21 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main (byte~) main::$0 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte~) main::$1 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 return to:@return inccnt: scope:[inccnt] from main main::@1 - (byte) cnt3#10 ← phi( main/(byte) 0 main::@1/(byte) cnt3#1 ) - (byte) cnt2#10 ← phi( main/(byte) 0 main::@1/(byte) cnt2#1 ) - (byte) cnt#11 ← phi( main/(byte) 0 main::@1/(byte) cnt#2 ) + (byte) cnt3#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt3#1 ) + (byte) cnt2#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt2#1 ) + (byte) cnt#11 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt#2 ) (byte) cnt#1 ← ++ (byte) cnt#11 (byte) cnt2#1 ← ++ (byte) cnt2#10 (byte) cnt3#1 ← ++ (byte) cnt3#10 @@ -686,7 +686,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 = (word) 1024 +(const byte[256]) SCREEN#0 = (word/signed word) 1024 (byte) cnt (byte) cnt#1 (byte) cnt#11 @@ -722,7 +722,7 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main (byte~) main::$0 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 (byte) cnt#2 ← ++ (byte) cnt#1 (byte~) cnt#16 ← (byte) cnt#2 (byte~) cnt2#15 ← (byte) cnt2#1 @@ -731,15 +731,15 @@ main::@1: scope:[main] from main to:main::@2 main::@2: scope:[main] from main::@1 (byte~) main::$1 ← (byte) inccnt::return#0 - *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 return to:@return inccnt: scope:[inccnt] from main main::@1 - (byte) cnt3#10 ← phi( main/(byte) 0 main::@1/(byte~) cnt3#15 ) - (byte) cnt2#10 ← phi( main/(byte) 0 main::@1/(byte~) cnt2#15 ) - (byte) cnt#11 ← phi( main/(byte) 0 main::@1/(byte~) cnt#16 ) + (byte) cnt3#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) cnt3#15 ) + (byte) cnt2#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) cnt2#15 ) + (byte) cnt#11 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) cnt#16 ) (byte) cnt#1 ← ++ (byte) cnt#11 (byte) cnt2#1 ← ++ (byte) cnt2#10 (byte) cnt3#1 ← ++ (byte) cnt3#10 @@ -776,7 +776,7 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [3] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] - [4] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] + [4] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] [5] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 cnt2#1 cnt3#1 ] [6] (byte~) cnt#16 ← (byte) cnt#2 [ cnt#16 cnt2#1 cnt3#1 ] [7] (byte~) cnt2#15 ← (byte) cnt2#1 [ cnt#16 cnt2#15 cnt3#1 ] @@ -785,15 +785,15 @@ main::@1: scope:[main] from main to:main::@2 main::@2: scope:[main] from main::@1 [10] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] - [11] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 [ ] + [11] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 [ ] to:main::@return main::@return: scope:[main] from main::@2 [12] return [ ] to:@return inccnt: scope:[inccnt] from main main::@1 - [13] (byte) cnt3#10 ← phi( main/(byte) 0 main::@1/(byte~) cnt3#15 ) [ cnt#11 cnt2#10 cnt3#10 ] - [13] (byte) cnt2#10 ← phi( main/(byte) 0 main::@1/(byte~) cnt2#15 ) [ cnt#11 cnt2#10 cnt3#10 ] - [13] (byte) cnt#11 ← phi( main/(byte) 0 main::@1/(byte~) cnt#16 ) [ cnt#11 cnt2#10 cnt3#10 ] + [13] (byte) cnt3#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) cnt3#15 ) [ cnt#11 cnt2#10 cnt3#10 ] + [13] (byte) cnt2#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) cnt2#15 ) [ cnt#11 cnt2#10 cnt3#10 ] + [13] (byte) cnt#11 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) cnt#16 ) [ cnt#11 cnt2#10 cnt3#10 ] [14] (byte) cnt#1 ← ++ (byte) cnt#11 [ cnt#1 cnt2#10 cnt3#10 ] [15] (byte) cnt2#1 ← ++ (byte) cnt2#10 [ cnt#1 cnt2#1 cnt3#10 ] [16] (byte) cnt3#1 ← ++ (byte) cnt3#10 [ cnt#1 cnt2#1 cnt3#1 ] @@ -831,21 +831,21 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [3] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] - [4] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] + [4] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] [5] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 cnt2#1 cnt3#1 ] [6] call inccnt param-assignment [ inccnt::return#0 ] to:main::@2 main::@2: scope:[main] from main::@1 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] - [8] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 [ ] + [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 [ ] to:main::@return main::@return: scope:[main] from main::@2 [9] return [ ] to:@return inccnt: scope:[inccnt] from main main::@1 - [10] (byte) cnt3#10 ← phi( main/(byte) 0 main::@1/(byte) cnt3#1 ) [ cnt#11 cnt2#10 cnt3#10 ] - [10] (byte) cnt2#10 ← phi( main/(byte) 0 main::@1/(byte) cnt2#1 ) [ cnt#11 cnt2#10 cnt3#10 ] - [10] (byte) cnt#11 ← phi( main/(byte) 0 main::@1/(byte) cnt#2 ) [ cnt#11 cnt2#10 cnt3#10 ] + [10] (byte) cnt3#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt3#1 ) [ cnt#11 cnt2#10 cnt3#10 ] + [10] (byte) cnt2#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt2#1 ) [ cnt#11 cnt2#10 cnt3#10 ] + [10] (byte) cnt#11 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt#2 ) [ cnt#11 cnt2#10 cnt3#10 ] [11] (byte) cnt#1 ← ++ (byte) cnt#11 [ cnt#1 cnt2#10 cnt3#10 ] [12] (byte) cnt2#1 ← ++ (byte) cnt2#10 [ cnt#1 cnt3#10 cnt2#1 ] [13] (byte) cnt3#1 ← ++ (byte) cnt3#10 [ cnt#1 cnt2#1 cnt3#1 ] @@ -868,21 +868,21 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [3] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ) - [4] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) + [4] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) [5] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 cnt2#1 cnt3#1 ] ( main:0 [ cnt#2 cnt2#1 cnt3#1 ] ) [6] call inccnt param-assignment [ inccnt::return#0 ] ( main:0 [ inccnt::return#0 ] ) to:main::@2 main::@2: scope:[main] from main::@1 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] ( main:0 [ main::$1 ] ) - [8] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) + [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main::@2 [9] return [ ] ( main:0 [ ] ) to:@return inccnt: scope:[inccnt] from main main::@1 - [10] (byte) cnt3#10 ← phi( main/(byte) 0 main::@1/(byte) cnt3#1 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) - [10] (byte) cnt2#10 ← phi( main/(byte) 0 main::@1/(byte) cnt2#1 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) - [10] (byte) cnt#11 ← phi( main/(byte) 0 main::@1/(byte) cnt#2 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) + [10] (byte) cnt3#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt3#1 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) + [10] (byte) cnt2#10 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt2#1 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) + [10] (byte) cnt#11 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt#2 ) [ cnt#11 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#11 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#11 cnt2#10 cnt3#10 ] ) [11] (byte) cnt#1 ← ++ (byte) cnt#11 [ cnt#1 cnt2#10 cnt3#10 ] ( main:0::inccnt:2 [ cnt#1 cnt2#10 cnt3#10 ] main:0::inccnt:6 [ cnt#1 cnt2#10 cnt3#10 ] ) [12] (byte) cnt2#1 ← ++ (byte) cnt2#10 [ cnt#1 cnt3#10 cnt2#1 ] ( main:0::inccnt:2 [ cnt#1 cnt3#10 cnt2#1 ] main:0::inccnt:6 [ cnt#1 cnt3#10 cnt2#1 ] ) [13] (byte) cnt3#1 ← ++ (byte) cnt3#10 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0::inccnt:2 [ cnt#1 cnt2#1 cnt3#1 ] main:0::inccnt:6 [ cnt#1 cnt2#1 cnt3#1 ] ) @@ -895,13 +895,13 @@ inccnt::@return: scope:[inccnt] from inccnt DOMINATORS @begin dominated by @begin @2 dominated by @2 @begin -@end dominated by @2 @end @begin +@end dominated by @2 @begin @end main dominated by @2 @begin main main::@1 dominated by @2 @begin main::@1 main -main::@2 dominated by @2 @begin main::@2 main::@1 main -main::@return dominated by @2 main::@return @begin main::@2 main::@1 main +main::@2 dominated by @2 @begin main::@1 main::@2 main +main::@return dominated by main::@return @2 @begin main::@1 main::@2 main inccnt dominated by @2 inccnt @begin main -inccnt::@return dominated by inccnt::@return @2 inccnt @begin main +inccnt::@return dominated by @2 inccnt @begin main inccnt::@return NATURAL LOOPS @@ -984,13 +984,13 @@ main: { //SEG8 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ) //SEG9 [10] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG10 [10] phi (byte) cnt3#10 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 + //SEG10 [10] phi (byte) cnt3#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG11 [10] phi (byte) cnt2#10 = (byte) 0 [phi:main->inccnt#1] -- zpby1=coby1 + //SEG11 [10] phi (byte) cnt2#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#1] -- zpby1=coby1 lda #0 sta cnt2 - //SEG12 [10] phi (byte) cnt#11 = (byte) 0 [phi:main->inccnt#2] -- zpby1=coby1 + //SEG12 [10] phi (byte) cnt#11 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#2] -- zpby1=coby1 lda #0 sta cnt_11 jsr inccnt @@ -1000,7 +1000,7 @@ main: { //SEG14 [3] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ) -- zpby1=zpby2 lda inccnt.return sta _0 - //SEG15 [4] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=zpby1 + //SEG15 [4] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=zpby1 lda _0 sta SCREEN+0 //SEG16 [5] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 cnt2#1 cnt3#1 ] ( main:0 [ cnt#2 cnt2#1 cnt3#1 ] ) -- zpby1=_inc_zpby2 @@ -1020,7 +1020,7 @@ main: { //SEG23 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] ( main:0 [ main::$1 ] ) -- zpby1=zpby2 lda inccnt.return sta _1 - //SEG24 [8] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=zpby1 + //SEG24 [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=zpby1 lda _1 sta SCREEN+1 jmp breturn @@ -1100,19 +1100,19 @@ main: { //SEG8 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ) //SEG9 [10] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG10 [10] phi (byte) cnt3#10 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 + //SEG10 [10] phi (byte) cnt3#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG11 [10] phi (byte) cnt2#10 = (byte) 0 [phi:main->inccnt#1] -- yby=coby1 + //SEG11 [10] phi (byte) cnt2#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#1] -- yby=coby1 ldy #0 - //SEG12 [10] phi (byte) cnt#11 = (byte) 0 [phi:main->inccnt#2] -- xby=coby1 + //SEG12 [10] phi (byte) cnt#11 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#2] -- xby=coby1 ldx #0 jsr inccnt //SEG13 main::@1 b1: //SEG14 [3] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ) // (byte~) main::$0 = (byte) inccnt::return#0 // register copy reg byte a - //SEG15 [4] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=aby + //SEG15 [4] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=aby sta SCREEN+0 //SEG16 [5] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 cnt2#1 cnt3#1 ] ( main:0 [ cnt#2 cnt2#1 cnt3#1 ] ) -- xby=_inc_xby inx @@ -1127,7 +1127,7 @@ main: { b2: //SEG23 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] ( main:0 [ main::$1 ] ) // (byte~) main::$1 = (byte) inccnt::return#0 // register copy reg byte a - //SEG24 [8] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=aby + //SEG24 [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=aby sta SCREEN+1 //SEG25 main::@return breturn: @@ -1176,19 +1176,19 @@ main: { //SEG8 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ) //SEG9 [10] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG10 [10] phi (byte) cnt3#10 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 + //SEG10 [10] phi (byte) cnt3#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG11 [10] phi (byte) cnt2#10 = (byte) 0 [phi:main->inccnt#1] -- yby=coby1 + //SEG11 [10] phi (byte) cnt2#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#1] -- yby=coby1 tay - //SEG12 [10] phi (byte) cnt#11 = (byte) 0 [phi:main->inccnt#2] -- xby=coby1 + //SEG12 [10] phi (byte) cnt#11 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#2] -- xby=coby1 tax jsr inccnt //SEG13 main::@1 b1: //SEG14 [3] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ) // (byte~) main::$0 = (byte) inccnt::return#0 // register copy reg byte a - //SEG15 [4] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=aby + //SEG15 [4] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=aby sta SCREEN+0 //SEG16 [5] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 cnt2#1 cnt3#1 ] ( main:0 [ cnt#2 cnt2#1 cnt3#1 ] ) -- xby=_inc_xby inx @@ -1203,7 +1203,7 @@ main: { b2: //SEG23 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] ( main:0 [ main::$1 ] ) // (byte~) main::$1 = (byte) inccnt::return#0 // register copy reg byte a - //SEG24 [8] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=aby + //SEG24 [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=aby sta SCREEN+1 //SEG25 main::@return breturn: @@ -1253,18 +1253,18 @@ ASSEMBLER main: { //SEG8 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ) //SEG9 [10] phi from main to inccnt [phi:main->inccnt] - //SEG10 [10] phi (byte) cnt3#10 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 + //SEG10 [10] phi (byte) cnt3#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG11 [10] phi (byte) cnt2#10 = (byte) 0 [phi:main->inccnt#1] -- yby=coby1 + //SEG11 [10] phi (byte) cnt2#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#1] -- yby=coby1 tay - //SEG12 [10] phi (byte) cnt#11 = (byte) 0 [phi:main->inccnt#2] -- xby=coby1 + //SEG12 [10] phi (byte) cnt#11 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#2] -- xby=coby1 tax jsr inccnt //SEG13 main::@1 //SEG14 [3] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ) // (byte~) main::$0 = (byte) inccnt::return#0 // register copy reg byte a - //SEG15 [4] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=aby + //SEG15 [4] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=aby sta SCREEN+0 //SEG16 [5] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 cnt2#1 cnt3#1 ] ( main:0 [ cnt#2 cnt2#1 cnt3#1 ] ) -- xby=_inc_xby inx @@ -1277,7 +1277,7 @@ main: { //SEG22 main::@2 //SEG23 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] ( main:0 [ main::$1 ] ) // (byte~) main::$1 = (byte) inccnt::return#0 // register copy reg byte a - //SEG24 [8] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=aby + //SEG24 [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=aby sta SCREEN+1 //SEG25 main::@return //SEG26 [9] return [ ] ( main:0 [ ] ) @@ -1303,7 +1303,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 SCREEN = (word) 1024 +(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) cnt (byte) cnt#1 reg byte x 0.75 (byte) cnt#11 reg byte x 4.0 @@ -1351,18 +1351,18 @@ FINAL CODE main: { //SEG8 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] ) //SEG9 [10] phi from main to inccnt [phi:main->inccnt] - //SEG10 [10] phi (byte) cnt3#10 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 + //SEG10 [10] phi (byte) cnt3#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG11 [10] phi (byte) cnt2#10 = (byte) 0 [phi:main->inccnt#1] -- yby=coby1 + //SEG11 [10] phi (byte) cnt2#10 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#1] -- yby=coby1 tay - //SEG12 [10] phi (byte) cnt#11 = (byte) 0 [phi:main->inccnt#2] -- xby=coby1 + //SEG12 [10] phi (byte) cnt#11 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#2] -- xby=coby1 tax jsr inccnt //SEG13 main::@1 //SEG14 [3] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ main::$0 cnt#1 cnt2#1 cnt3#1 ] ) // (byte~) main::$0 = (byte) inccnt::return#0 // register copy reg byte a - //SEG15 [4] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=aby + //SEG15 [4] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte~) main::$0 [ cnt#1 cnt2#1 cnt3#1 ] ( main:0 [ cnt#1 cnt2#1 cnt3#1 ] ) -- _deref_cowo1=aby sta SCREEN+0 //SEG16 [5] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 cnt2#1 cnt3#1 ] ( main:0 [ cnt#2 cnt2#1 cnt3#1 ] ) -- xby=_inc_xby inx @@ -1375,7 +1375,7 @@ main: { //SEG22 main::@2 //SEG23 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] ( main:0 [ main::$1 ] ) // (byte~) main::$1 = (byte) inccnt::return#0 // register copy reg byte a - //SEG24 [8] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=aby + //SEG24 [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte~) main::$1 [ ] ( main:0 [ ] ) -- _deref_cowo1=aby sta SCREEN+1 //SEG25 main::@return //SEG26 [9] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.sym b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.sym index c748923ce..8694aea06 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 SCREEN = (word) 1024 +(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) cnt (byte) cnt#1 reg byte x 0.75 (byte) cnt#11 reg byte x 4.0 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.cfg b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.cfg index eba380787..ba47c5ef2 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.cfg @@ -9,19 +9,19 @@ main: scope:[main] from @2 [2] call inccnt param-assignment [ cnt#1 ] ( main:0 [ cnt#1 ] ) to:main::@1 main::@1: scope:[main] from main - [3] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) + [3] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) [4] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 ] ( main:0 [ cnt#2 ] ) [5] call inccnt param-assignment [ cnt#1 ] ( main:0 [ cnt#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 [6] (byte) cnt#11 ← ++ (byte) cnt#1 [ cnt#11 ] ( main:0 [ cnt#11 ] ) - [7] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) + [7] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main::@2 [8] return [ ] ( main:0 [ ] ) to:@return inccnt: scope:[inccnt] from main main::@1 - [9] (byte) cnt#12 ← phi( main/(byte) 0 main::@1/(byte) cnt#2 ) [ cnt#12 ] ( main:0::inccnt:2 [ cnt#12 ] main:0::inccnt:5 [ cnt#12 ] ) + [9] (byte) cnt#12 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt#2 ) [ cnt#12 ] ( main:0::inccnt:2 [ cnt#12 ] main:0::inccnt:5 [ cnt#12 ] ) [10] (byte) cnt#1 ← ++ (byte) cnt#12 [ cnt#1 ] ( main:0::inccnt:2 [ cnt#1 ] main:0::inccnt:5 [ cnt#1 ] ) to:inccnt::@return inccnt::@return: scope:[inccnt] from inccnt diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log index 149668b0c..48c04bd42 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log @@ -19,15 +19,15 @@ Adding pre/post-modifier (byte) cnt ← ++ (byte) cnt Adding pre/post-modifier (byte) cnt ← ++ (byte) cnt Adding pre/post-modifier (byte) cnt ← ++ (byte) cnt PROGRAM - (byte) cnt ← (byte) 0 - (byte[256]) SCREEN ← (word) 1024 + (byte) cnt ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN ← (word/signed word) 1024 proc (void()) main() (void~) main::$0 ← call inccnt - *((byte[256]) SCREEN + (byte) 0) ← (byte) cnt + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte) cnt (byte) cnt ← ++ (byte) cnt (void~) main::$1 ← call inccnt (byte) cnt ← ++ (byte) cnt - *((byte[256]) SCREEN + (byte) 1) ← (byte) cnt + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 1) ← (byte) cnt main::@return: return endproc // main() @@ -50,16 +50,16 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte) cnt ← (byte) 0 - (byte[256]) SCREEN ← (word) 1024 + (byte) cnt ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from (void~) main::$0 ← call inccnt - *((byte[256]) SCREEN + (byte) 0) ← (byte) cnt + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte) cnt (byte) cnt ← ++ (byte) cnt (void~) main::$1 ← call inccnt (byte) cnt ← ++ (byte) cnt - *((byte[256]) SCREEN + (byte) 1) ← (byte) cnt + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 1) ← (byte) cnt to:main::@return main::@return: scope:[main] from main return @@ -80,16 +80,16 @@ inccnt::@return: scope:[inccnt] from inccnt Removing empty block @1 CONTROL FLOW GRAPH @begin: scope:[] from - (byte) cnt ← (byte) 0 - (byte[256]) SCREEN ← (word) 1024 + (byte) cnt ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN ← (word/signed word) 1024 to:@2 main: scope:[main] from (void~) main::$0 ← call inccnt - *((byte[256]) SCREEN + (byte) 0) ← (byte) cnt + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte) cnt (byte) cnt ← ++ (byte) cnt (void~) main::$1 ← call inccnt (byte) cnt ← ++ (byte) cnt - *((byte[256]) SCREEN + (byte) 1) ← (byte) cnt + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 1) ← (byte) cnt to:main::@return main::@return: scope:[main] from main return @@ -111,22 +111,22 @@ inccnt modifies cnt CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte) cnt ← (byte) 0 - (byte[256]) SCREEN ← (word) 1024 + (byte) cnt ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 call inccnt param-assignment to:main::@1 main::@1: scope:[main] from main (byte) cnt ← (byte) cnt - *((byte[256]) SCREEN + (byte) 0) ← (byte) cnt + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 0) ← (byte) cnt (byte) cnt ← ++ (byte) cnt call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte) cnt ← (byte) cnt (byte) cnt ← ++ (byte) cnt - *((byte[256]) SCREEN + (byte) 1) ← (byte) cnt + *((byte[256]) SCREEN + (byte/signed byte/word/signed word) 1) ← (byte) cnt to:main::@return main::@return: scope:[main] from main::@2 (byte) cnt ← (byte) cnt @@ -152,8 +152,8 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte) cnt#0 ← (byte) 0 - (byte[256]) SCREEN#0 ← (word) 1024 + (byte) cnt#0 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) @@ -164,7 +164,7 @@ main::@1: scope:[main] from main (byte[256]) SCREEN#1 ← phi( main/(byte[256]) SCREEN#3 ) (byte) cnt#9 ← phi( main/(byte) cnt#15 ) (byte) cnt#1 ← (byte) cnt#9 - *((byte[256]) SCREEN#1 + (byte) 0) ← (byte) cnt#1 + *((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 @@ -173,7 +173,7 @@ main::@2: scope:[main] from main::@1 (byte) cnt#10 ← phi( main::@1/(byte) cnt#2 ) (byte) cnt#3 ← (byte) cnt#10 (byte) cnt#4 ← ++ (byte) cnt#3 - *((byte[256]) SCREEN#2 + (byte) 1) ← (byte) cnt#4 + *((byte[256]) SCREEN#2 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#4 to:main::@return main::@return: scope:[main] from main::@2 (byte) cnt#11 ← phi( main::@2/(byte) cnt#4 ) @@ -202,8 +202,8 @@ inccnt::@return: scope:[inccnt] from inccnt CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte) cnt#0 ← (byte) 0 - (byte[256]) SCREEN#0 ← (word) 1024 + (byte) cnt#0 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) @@ -214,7 +214,7 @@ main::@1: scope:[main] from main (byte[256]) SCREEN#1 ← phi( main/(byte[256]) SCREEN#3 ) (byte) cnt#9 ← phi( main/(byte) cnt#7 ) (byte) cnt#1 ← (byte) cnt#9 - *((byte[256]) SCREEN#1 + (byte) 0) ← (byte) cnt#1 + *((byte[256]) SCREEN#1 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 @@ -223,7 +223,7 @@ main::@2: scope:[main] from main::@1 (byte) cnt#10 ← phi( main::@1/(byte) cnt#7 ) (byte) cnt#3 ← (byte) cnt#10 (byte) cnt#4 ← ++ (byte) cnt#3 - *((byte[256]) SCREEN#2 + (byte) 1) ← (byte) cnt#4 + *((byte[256]) SCREEN#2 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#4 to:main::@return main::@return: scope:[main] from main::@2 (byte) cnt#11 ← phi( main::@2/(byte) cnt#4 ) @@ -293,20 +293,20 @@ Alias (byte) cnt#11 = (byte) cnt#4 (byte) cnt#5 (byte) cnt#14 (byte) cnt#8 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte) cnt#0 ← (byte) 0 - (byte[256]) SCREEN#0 ← (word) 1024 + (byte) cnt#0 ← (byte/signed byte/word/signed word) 0 + (byte[256]) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 call inccnt param-assignment to:main::@1 main::@1: scope:[main] from main - *((byte[256]) SCREEN#0 + (byte) 0) ← (byte) cnt#1 + *((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte) cnt#11 ← ++ (byte) cnt#1 - *((byte[256]) SCREEN#0 + (byte) 1) ← (byte) cnt#11 + *((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#11 to:main::@return main::@return: scope:[main] from main::@2 return @@ -335,13 +335,13 @@ main: scope:[main] from @2 call inccnt param-assignment to:main::@1 main::@1: scope:[main] from main - *((const byte[256]) SCREEN#0 + (byte) 0) ← (byte) cnt#1 + *((const byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 0) ← (byte) cnt#1 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte) cnt#11 ← ++ (byte) cnt#1 - *((const byte[256]) SCREEN#0 + (byte) 1) ← (byte) cnt#11 + *((const byte[256]) SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte) cnt#11 to:main::@return main::@return: scope:[main] from main::@2 return @@ -370,13 +370,13 @@ main: scope:[main] from @2 call inccnt param-assignment to:main::@1 main::@1: scope:[main] from main - *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte) cnt#11 ← ++ (byte) cnt#1 - *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 to:main::@return main::@return: scope:[main] from main::@2 return @@ -404,13 +404,13 @@ main: scope:[main] from @2 call inccnt param-assignment to:main::@1 main::@1: scope:[main] from main - *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte) cnt#11 ← ++ (byte) cnt#1 - *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 to:main::@return main::@return: scope:[main] from main::@2 return @@ -431,7 +431,7 @@ Inlining constant with var siblings (const byte) cnt#0 Inlining constant with var siblings (const byte) cnt#0 Inlining constant with var siblings (const byte) cnt#0 Inlining constant with var siblings (const byte) cnt#0 -Constant inlined cnt#0 = (byte) 0 +Constant inlined cnt#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -440,19 +440,19 @@ main: scope:[main] from @2 call inccnt param-assignment to:main::@1 main::@1: scope:[main] from main - *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte) cnt#11 ← ++ (byte) cnt#1 - *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 to:main::@return main::@return: scope:[main] from main::@2 return to:@return inccnt: scope:[inccnt] from main main::@1 - (byte) cnt#12 ← phi( main/(byte) 0 main::@1/(byte) cnt#2 ) + (byte) cnt#12 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt#2 ) (byte) cnt#1 ← ++ (byte) cnt#12 to:inccnt::@return inccnt::@return: scope:[inccnt] from inccnt @@ -468,7 +468,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 = (word) 1024 +(const byte[256]) SCREEN#0 = (word/signed word) 1024 (byte) cnt (byte) cnt#1 (byte) cnt#11 @@ -494,20 +494,20 @@ main: scope:[main] from @2 call inccnt param-assignment to:main::@1 main::@1: scope:[main] from main - *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 (byte) cnt#2 ← ++ (byte) cnt#1 (byte~) cnt#17 ← (byte) cnt#2 call inccnt param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte) cnt#11 ← ++ (byte) cnt#1 - *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 + *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 to:main::@return main::@return: scope:[main] from main::@2 return to:@return inccnt: scope:[inccnt] from main main::@1 - (byte) cnt#12 ← phi( main/(byte) 0 main::@1/(byte~) cnt#17 ) + (byte) cnt#12 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) cnt#17 ) (byte) cnt#1 ← ++ (byte) cnt#12 to:inccnt::@return inccnt::@return: scope:[inccnt] from inccnt @@ -534,20 +534,20 @@ main: scope:[main] from @2 [2] call inccnt param-assignment [ cnt#1 ] to:main::@1 main::@1: scope:[main] from main - [3] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 [ cnt#1 ] + [3] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 [ cnt#1 ] [4] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 ] [5] (byte~) cnt#17 ← (byte) cnt#2 [ cnt#17 ] [6] call inccnt param-assignment [ cnt#1 ] to:main::@2 main::@2: scope:[main] from main::@1 [7] (byte) cnt#11 ← ++ (byte) cnt#1 [ cnt#11 ] - [8] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 [ ] + [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] to:main::@return main::@return: scope:[main] from main::@2 [9] return [ ] to:@return inccnt: scope:[inccnt] from main main::@1 - [10] (byte) cnt#12 ← phi( main/(byte) 0 main::@1/(byte~) cnt#17 ) [ cnt#12 ] + [10] (byte) cnt#12 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte~) cnt#17 ) [ cnt#12 ] [11] (byte) cnt#1 ← ++ (byte) cnt#12 [ cnt#1 ] to:inccnt::@return inccnt::@return: scope:[inccnt] from inccnt @@ -574,19 +574,19 @@ main: scope:[main] from @2 [2] call inccnt param-assignment [ cnt#1 ] to:main::@1 main::@1: scope:[main] from main - [3] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 [ cnt#1 ] + [3] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 [ cnt#1 ] [4] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 ] [5] call inccnt param-assignment [ cnt#1 ] to:main::@2 main::@2: scope:[main] from main::@1 [6] (byte) cnt#11 ← ++ (byte) cnt#1 [ cnt#11 ] - [7] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 [ ] + [7] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] to:main::@return main::@return: scope:[main] from main::@2 [8] return [ ] to:@return inccnt: scope:[inccnt] from main main::@1 - [9] (byte) cnt#12 ← phi( main/(byte) 0 main::@1/(byte) cnt#2 ) [ cnt#12 ] + [9] (byte) cnt#12 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt#2 ) [ cnt#12 ] [10] (byte) cnt#1 ← ++ (byte) cnt#12 [ cnt#1 ] to:inccnt::@return inccnt::@return: scope:[inccnt] from inccnt @@ -605,19 +605,19 @@ main: scope:[main] from @2 [2] call inccnt param-assignment [ cnt#1 ] ( main:0 [ cnt#1 ] ) to:main::@1 main::@1: scope:[main] from main - [3] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) + [3] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) [4] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 ] ( main:0 [ cnt#2 ] ) [5] call inccnt param-assignment [ cnt#1 ] ( main:0 [ cnt#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 [6] (byte) cnt#11 ← ++ (byte) cnt#1 [ cnt#11 ] ( main:0 [ cnt#11 ] ) - [7] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) + [7] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main::@2 [8] return [ ] ( main:0 [ ] ) to:@return inccnt: scope:[inccnt] from main main::@1 - [9] (byte) cnt#12 ← phi( main/(byte) 0 main::@1/(byte) cnt#2 ) [ cnt#12 ] ( main:0::inccnt:2 [ cnt#12 ] main:0::inccnt:5 [ cnt#12 ] ) + [9] (byte) cnt#12 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) cnt#2 ) [ cnt#12 ] ( main:0::inccnt:2 [ cnt#12 ] main:0::inccnt:5 [ cnt#12 ] ) [10] (byte) cnt#1 ← ++ (byte) cnt#12 [ cnt#1 ] ( main:0::inccnt:2 [ cnt#1 ] main:0::inccnt:5 [ cnt#1 ] ) to:inccnt::@return inccnt::@return: scope:[inccnt] from inccnt @@ -627,13 +627,13 @@ inccnt::@return: scope:[inccnt] from inccnt DOMINATORS @begin dominated by @begin @2 dominated by @2 @begin -@end dominated by @2 @end @begin +@end dominated by @2 @begin @end main dominated by @2 @begin main main::@1 dominated by @2 @begin main::@1 main -main::@2 dominated by @2 @begin main::@2 main::@1 main -main::@return dominated by @2 main::@return @begin main::@2 main::@1 main +main::@2 dominated by @2 @begin main::@1 main::@2 main +main::@return dominated by main::@return @2 @begin main::@1 main::@2 main inccnt dominated by @2 inccnt @begin main -inccnt::@return dominated by inccnt::@return @2 inccnt @begin main +inccnt::@return dominated by @2 inccnt @begin main inccnt::@return NATURAL LOOPS @@ -692,14 +692,14 @@ main: { //SEG8 [2] call inccnt param-assignment [ cnt#1 ] ( main:0 [ cnt#1 ] ) //SEG9 [9] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG10 [9] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 + //SEG10 [9] phi (byte) cnt#12 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt_12 jsr inccnt jmp b1 //SEG11 main::@1 b1: - //SEG12 [3] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=zpby1 + //SEG12 [3] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=zpby1 lda cnt sta SCREEN+0 //SEG13 [4] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 ] ( main:0 [ cnt#2 ] ) -- zpby1=_inc_zpby2 @@ -718,7 +718,7 @@ main: { lda cnt sta cnt_11 inc cnt_11 - //SEG19 [7] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=zpby1 + //SEG19 [7] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=zpby1 lda cnt_11 sta SCREEN+1 jmp breturn @@ -782,12 +782,12 @@ main: { //SEG8 [2] call inccnt param-assignment [ cnt#1 ] ( main:0 [ cnt#1 ] ) //SEG9 [9] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG10 [9] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#0] -- xby=coby1 + //SEG10 [9] phi (byte) cnt#12 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- xby=coby1 ldx #0 jsr inccnt //SEG11 main::@1 b1: - //SEG12 [3] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=xby + //SEG12 [3] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=xby stx SCREEN+0 //SEG13 [4] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 ] ( main:0 [ cnt#2 ] ) -- xby=_inc_xby inx @@ -800,7 +800,7 @@ main: { b2: //SEG18 [6] (byte) cnt#11 ← ++ (byte) cnt#1 [ cnt#11 ] ( main:0 [ cnt#11 ] ) -- xby=_inc_xby inx - //SEG19 [7] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=xby + //SEG19 [7] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=xby stx SCREEN+1 //SEG20 main::@return breturn: @@ -840,12 +840,12 @@ main: { //SEG8 [2] call inccnt param-assignment [ cnt#1 ] ( main:0 [ cnt#1 ] ) //SEG9 [9] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG10 [9] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#0] -- xby=coby1 + //SEG10 [9] phi (byte) cnt#12 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- xby=coby1 ldx #0 jsr inccnt //SEG11 main::@1 b1: - //SEG12 [3] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=xby + //SEG12 [3] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=xby stx SCREEN+0 //SEG13 [4] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 ] ( main:0 [ cnt#2 ] ) -- xby=_inc_xby inx @@ -858,7 +858,7 @@ main: { b2: //SEG18 [6] (byte) cnt#11 ← ++ (byte) cnt#1 [ cnt#11 ] ( main:0 [ cnt#11 ] ) -- xby=_inc_xby inx - //SEG19 [7] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=xby + //SEG19 [7] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=xby stx SCREEN+1 //SEG20 main::@return breturn: @@ -901,11 +901,11 @@ ASSEMBLER main: { //SEG8 [2] call inccnt param-assignment [ cnt#1 ] ( main:0 [ cnt#1 ] ) //SEG9 [9] phi from main to inccnt [phi:main->inccnt] - //SEG10 [9] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#0] -- xby=coby1 + //SEG10 [9] phi (byte) cnt#12 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- xby=coby1 ldx #0 jsr inccnt //SEG11 main::@1 - //SEG12 [3] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=xby + //SEG12 [3] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=xby stx SCREEN+0 //SEG13 [4] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 ] ( main:0 [ cnt#2 ] ) -- xby=_inc_xby inx @@ -916,7 +916,7 @@ main: { //SEG17 main::@2 //SEG18 [6] (byte) cnt#11 ← ++ (byte) cnt#1 [ cnt#11 ] ( main:0 [ cnt#11 ] ) -- xby=_inc_xby inx - //SEG19 [7] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=xby + //SEG19 [7] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=xby stx SCREEN+1 //SEG20 main::@return //SEG21 [8] return [ ] ( main:0 [ ] ) @@ -936,7 +936,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 SCREEN = (word) 1024 +(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) cnt (byte) cnt#1 reg byte x 1.6 (byte) cnt#11 reg byte x 4.0 @@ -970,11 +970,11 @@ FINAL CODE main: { //SEG8 [2] call inccnt param-assignment [ cnt#1 ] ( main:0 [ cnt#1 ] ) //SEG9 [9] phi from main to inccnt [phi:main->inccnt] - //SEG10 [9] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#0] -- xby=coby1 + //SEG10 [9] phi (byte) cnt#12 = (byte/signed byte/word/signed word) 0 [phi:main->inccnt#0] -- xby=coby1 ldx #0 jsr inccnt //SEG11 main::@1 - //SEG12 [3] *((const byte[256]) SCREEN#0+(byte) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=xby + //SEG12 [3] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (byte) cnt#1 [ cnt#1 ] ( main:0 [ cnt#1 ] ) -- _deref_cowo1=xby stx SCREEN+0 //SEG13 [4] (byte) cnt#2 ← ++ (byte) cnt#1 [ cnt#2 ] ( main:0 [ cnt#2 ] ) -- xby=_inc_xby inx @@ -985,7 +985,7 @@ main: { //SEG17 main::@2 //SEG18 [6] (byte) cnt#11 ← ++ (byte) cnt#1 [ cnt#11 ] ( main:0 [ cnt#11 ] ) -- xby=_inc_xby inx - //SEG19 [7] *((const byte[256]) SCREEN#0+(byte) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=xby + //SEG19 [7] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte) cnt#11 [ ] ( main:0 [ ] ) -- _deref_cowo1=xby stx SCREEN+1 //SEG20 main::@return //SEG21 [8] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.sym b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.sym index 264c9f104..98f5d6377 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 SCREEN = (word) 1024 +(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 (byte) cnt (byte) cnt#1 reg byte x 1.6 (byte) cnt#11 reg byte x 4.0 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.cfg b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.cfg index d9803c385..0bd6ff4f7 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.cfg @@ -8,22 +8,22 @@ main: scope:[main] from @3 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] (byte) line::l#0 ← (byte) main::i#2 [ main::i#2 line::l#0 ] ( main:0 [ main::i#2 line::l#0 ] ) [4] call line param-assignment [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@5 main::@5: scope:[main] from main::@1 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@5 main::@6 - [7] (byte) main::j#2 ← phi( main::@5/(byte) 10 main::@6/(byte) main::j#1 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) + [7] (byte) main::j#2 ← phi( main::@5/(byte/signed byte/word/signed word) 10 main::@6/(byte) main::j#1 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) [8] (byte) line::l#1 ← (byte) main::j#2 [ main::j#2 line::l#1 ] ( main:0 [ main::j#2 line::l#1 ] ) [9] call line param-assignment [ main::j#2 ] ( main:0 [ main::j#2 ] ) to:main::@6 main::@6: scope:[main] from main::@2 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) - [11] if((byte) main::j#1!=(byte) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) to:main::@return main::@return: scope:[main] from main::@6 [12] return [ ] ( main:0 [ ] ) @@ -34,7 +34,7 @@ line: scope:[line] from main::@1 main::@2 [15] call plot param-assignment [ line::l#2 ] ( main:0::line:4 [ main::i#2 line::l#2 ] main:0::line:9 [ main::j#2 line::l#2 ] ) to:line::@1 line::@1: scope:[line] from line - [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) + [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) [17] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:0::line:4 [ main::i#2 plot::x#1 ] main:0::line:9 [ main::j#2 plot::x#1 ] ) [18] call plot param-assignment [ ] ( main:0::line:4 [ main::i#2 ] main:0::line:9 [ main::j#2 ] ) to:line::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.log b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.log index 5dfbb6fe2..6ae0def4f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.log @@ -20,26 +20,26 @@ void plot(byte x) { } PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: (void~) main::$0 ← call line (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 9 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 - (byte) main::j ← (byte) 10 + (byte) main::j ← (byte/signed byte/word/signed word) 10 main::@2: (void~) main::$2 ← call line (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$3 ← (byte) main::j != (byte) 19 + (boolean~) main::$3 ← (byte) main::j != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 main::@return: return endproc // main() proc (void()) line((byte) line::l) (void~) line::$0 ← call plot (byte) line::l - (byte~) line::$1 ← (byte) line::l + (byte) 20 + (byte~) line::$1 ← (byte) line::l + (byte/signed byte/word/signed word) 20 (void~) line::$2 ← call plot (byte~) line::$1 line::@return: return @@ -75,24 +75,24 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (void~) main::$0 ← call line (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 9 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::j ← (byte) 10 + (byte) main::j ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (void~) main::$2 ← call line (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$3 ← (byte) main::j != (byte) 19 + (boolean~) main::$3 ← (byte) main::j != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 @@ -104,7 +104,7 @@ main::@return: scope:[main] from main::@4 to:@2 line: scope:[line] from (void~) line::$0 ← call plot (byte) line::l - (byte~) line::$1 ← (byte) line::l + (byte) 20 + (byte~) line::$1 ← (byte) line::l + (byte/signed byte/word/signed word) 20 (void~) line::$2 ← call plot (byte~) line::$1 to:line::@return line::@return: scope:[line] from line @@ -128,24 +128,24 @@ Removing empty block @1 Removing empty block @2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@3 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (void~) main::$0 ← call line (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 9 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte) main::j ← (byte) 10 + (byte) main::j ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (void~) main::$2 ← call line (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$3 ← (byte) main::j != (byte) 19 + (boolean~) main::$3 ← (byte) main::j != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@2 @@ -153,7 +153,7 @@ main::@return: scope:[main] from main::@2 to:@return line: scope:[line] from (void~) line::$0 ← call plot (byte) line::l - (byte~) line::$1 ← (byte) line::l + (byte) 20 + (byte~) line::$1 ← (byte) line::l + (byte/signed byte/word/signed word) 20 (void~) line::$2 ← call plot (byte~) line::$1 to:line::@return line::@return: scope:[line] from line @@ -174,10 +174,10 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) line::l ← (byte) main::i @@ -185,11 +185,11 @@ main::@1: scope:[main] from main main::@5 to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 9 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 - (byte) main::j ← (byte) 10 + (byte) main::j ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte) line::l ← (byte) main::j @@ -197,7 +197,7 @@ main::@2: scope:[main] from main::@3 main::@6 to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j ← ++ (byte) main::j - (boolean~) main::$3 ← (byte) main::j != (byte) 19 + (boolean~) main::$3 ← (byte) main::j != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 @@ -208,7 +208,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 + (byte) 20 + (byte~) line::$1 ← (byte) line::l + (byte/signed byte/word/signed word) 20 (byte) plot::x ← (byte~) line::$1 call plot param-assignment to:line::@2 @@ -237,11 +237,11 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#6 main::@5/(byte*) SCREEN#7 ) @@ -253,12 +253,12 @@ main::@5: scope:[main] from main::@1 (byte*) SCREEN#7 ← phi( main::@1/(byte*) SCREEN#4 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 9 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 (byte*) SCREEN#8 ← phi( main::@5/(byte*) SCREEN#7 ) - (byte) main::j#0 ← (byte) 10 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte*) SCREEN#5 ← phi( main::@3/(byte*) SCREEN#8 main::@6/(byte*) SCREEN#9 ) @@ -270,7 +270,7 @@ main::@6: scope:[main] from main::@2 (byte*) SCREEN#9 ← phi( main::@2/(byte*) SCREEN#5 ) (byte) main::j#3 ← phi( main::@2/(byte) main::j#2 ) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 19 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 @@ -285,7 +285,7 @@ line: scope:[line] from main::@1 main::@2 line::@1: scope:[line] from line (byte*) SCREEN#3 ← phi( line/(byte*) SCREEN#2 ) (byte) line::l#3 ← phi( line/(byte) line::l#2 ) - (byte~) line::$1 ← (byte) line::l#3 + (byte) 20 + (byte~) line::$1 ← (byte) line::l#3 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@2 @@ -312,11 +312,11 @@ plot::@return: scope:[plot] from plot CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#6 main::@5/(byte*) SCREEN#7 ) @@ -328,12 +328,12 @@ main::@5: scope:[main] from main::@1 (byte*) SCREEN#7 ← phi( main::@1/(byte*) SCREEN#4 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 9 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 (byte*) SCREEN#8 ← phi( main::@5/(byte*) SCREEN#7 ) - (byte) main::j#0 ← (byte) 10 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte*) SCREEN#5 ← phi( main::@3/(byte*) SCREEN#8 main::@6/(byte*) SCREEN#9 ) @@ -345,7 +345,7 @@ main::@6: scope:[main] from main::@2 (byte*) SCREEN#9 ← phi( main::@2/(byte*) SCREEN#5 ) (byte) main::j#3 ← phi( main::@2/(byte) main::j#2 ) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 19 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 @@ -360,7 +360,7 @@ line: scope:[line] from main::@1 main::@2 line::@1: scope:[line] from line (byte*) SCREEN#3 ← phi( line/(byte*) SCREEN#2 ) (byte) line::l#3 ← phi( line/(byte) line::l#2 ) - (byte~) line::$1 ← (byte) line::l#3 + (byte) 20 + (byte~) line::$1 ← (byte) line::l#3 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@2 @@ -443,11 +443,11 @@ Culled Empty Block (label) @4 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#6 main::@5/(byte*) SCREEN#7 ) @@ -459,12 +459,12 @@ main::@5: scope:[main] from main::@1 (byte*) SCREEN#7 ← phi( main::@1/(byte*) SCREEN#4 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 9 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 (byte*) SCREEN#8 ← phi( main::@5/(byte*) SCREEN#7 ) - (byte) main::j#0 ← (byte) 10 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte*) SCREEN#5 ← phi( main::@3/(byte*) SCREEN#8 main::@6/(byte*) SCREEN#9 ) @@ -476,7 +476,7 @@ main::@6: scope:[main] from main::@2 (byte*) SCREEN#9 ← phi( main::@2/(byte*) SCREEN#5 ) (byte) main::j#3 ← phi( main::@2/(byte) main::j#2 ) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 19 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 @@ -491,7 +491,7 @@ line: scope:[line] from main::@1 main::@2 line::@1: scope:[line] from line (byte*) SCREEN#3 ← phi( line/(byte*) SCREEN#2 ) (byte) line::l#3 ← phi( line/(byte) line::l#2 ) - (byte~) line::$1 ← (byte) line::l#3 + (byte) 20 + (byte~) line::$1 ← (byte) line::l#3 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -526,10 +526,10 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#0 main::@5/(byte*) SCREEN#4 ) @@ -539,11 +539,11 @@ main::@1: scope:[main] from main main::@5 to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 9 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 - (byte) main::j#0 ← (byte) 10 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte*) SCREEN#5 ← phi( main::@3/(byte*) SCREEN#4 main::@6/(byte*) SCREEN#5 ) @@ -553,7 +553,7 @@ main::@2: scope:[main] from main::@3 main::@6 to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 19 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 @@ -566,7 +566,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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -594,10 +594,10 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#0 main::@5/(byte*) SCREEN#4 ) @@ -607,11 +607,11 @@ main::@1: scope:[main] from main main::@5 to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 9 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 - (byte) main::j#0 ← (byte) 10 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte*) SCREEN#5 ← phi( main::@3/(byte*) SCREEN#4 main::@6/(byte*) SCREEN#5 ) @@ -621,7 +621,7 @@ main::@2: scope:[main] from main::@3 main::@6 to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 19 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 @@ -634,7 +634,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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -662,10 +662,10 @@ Self Phi Eliminated (byte*) SCREEN#5 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#0 ) @@ -675,11 +675,11 @@ main::@1: scope:[main] from main main::@5 to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 9 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 - (byte) main::j#0 ← (byte) 10 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte*) SCREEN#5 ← phi( main::@3/(byte*) SCREEN#4 ) @@ -689,7 +689,7 @@ main::@2: scope:[main] from main::@3 main::@6 to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 19 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 @@ -702,7 +702,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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -726,10 +726,10 @@ Redundant Phi (byte*) SCREEN#5 (byte*) SCREEN#4 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) @@ -738,11 +738,11 @@ main::@1: scope:[main] from main main::@5 to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 9 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 - (byte) main::j#0 ← (byte) 10 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte) main::j#2 ← phi( main::@3/(byte) main::j#0 main::@6/(byte) main::j#1 ) @@ -751,7 +751,7 @@ main::@2: scope:[main] from main::@3 main::@6 to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 19 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 @@ -764,7 +764,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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -787,10 +787,10 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) @@ -799,11 +799,11 @@ main::@1: scope:[main] from main main::@5 to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 9 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 9 if((boolean~) main::$1) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 - (byte) main::j#0 ← (byte) 10 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte) main::j#2 ← phi( main::@3/(byte) main::j#0 main::@6/(byte) main::j#1 ) @@ -812,7 +812,7 @@ main::@2: scope:[main] from main::@3 main::@6 to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 19 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 19 if((boolean~) main::$3) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 @@ -824,7 +824,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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -843,15 +843,15 @@ plot::@return: scope:[plot] from plot to:@end @end: scope:[] from @3 -Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte) 9) goto main::@1 -Simple Condition (boolean~) main::$3 if((byte) main::j#1!=(byte) 19) goto main::@2 +Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 +Simple Condition (boolean~) main::$3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@5 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 ) @@ -860,10 +860,10 @@ main::@1: scope:[main] from main main::@5 to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 9) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 - (byte) main::j#0 ← (byte) 10 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 10 to:main::@2 main::@2: scope:[main] from main::@3 main::@6 (byte) main::j#2 ← phi( main::@3/(byte) main::j#0 main::@6/(byte) main::j#1 ) @@ -872,7 +872,7 @@ main::@2: scope:[main] from main::@3 main::@6 to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 19) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 return @@ -883,7 +883,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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -918,7 +918,7 @@ main::@1: scope:[main] from main main::@5 to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 9) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@5 to:main::@2 @@ -929,7 +929,7 @@ main::@2: scope:[main] from main::@3 main::@6 to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 19) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 return @@ -940,7 +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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -974,7 +974,7 @@ main::@1: scope:[main] from main main::@5 to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 9) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@5 main::@6 (byte) main::j#2 ← phi( main::@5/(const byte) main::j#0 main::@6/(byte) main::j#1 ) @@ -983,7 +983,7 @@ main::@2: scope:[main] from main::@5 main::@6 to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 19) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 return @@ -994,7 +994,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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -1027,8 +1027,8 @@ Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0 -Constant inlined main::j#0 = (byte) 10 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::j#0 = (byte/signed byte/word/signed word) 10 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -1036,22 +1036,22 @@ CONTROL FLOW GRAPH main: scope:[main] from @3 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::i#1 ) (byte) line::l#0 ← (byte) main::i#2 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 9) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@5 main::@6 - (byte) main::j#2 ← phi( main::@5/(byte) 10 main::@6/(byte) main::j#1 ) + (byte) main::j#2 ← phi( main::@5/(byte/signed byte/word/signed word) 10 main::@6/(byte) main::j#1 ) (byte) line::l#1 ← (byte) main::j#2 call line param-assignment to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 19) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 to:main::@return main::@return: scope:[main] from main::@6 return @@ -1062,7 +1062,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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 call plot param-assignment to:line::@return @@ -1086,7 +1086,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) line((byte) line::l) (byte~) line::$1 (label) line::@1 @@ -1128,24 +1128,24 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @3 to:main::@1 main::@1: scope:[main] from main main::@7 - (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte~) main::i#4 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte~) main::i#4 ) (byte) line::l#0 ← (byte) main::i#2 (byte~) line::l#4 ← (byte) line::l#0 call line param-assignment to:main::@5 main::@5: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 9) goto main::@7 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@7 to:main::@2 main::@2: scope:[main] from main::@5 main::@8 - (byte) main::j#2 ← phi( main::@5/(byte) 10 main::@8/(byte~) main::j#4 ) + (byte) main::j#2 ← phi( main::@5/(byte/signed byte/word/signed word) 10 main::@8/(byte~) main::j#4 ) (byte) line::l#1 ← (byte) main::j#2 (byte~) line::l#5 ← (byte) line::l#1 call line param-assignment to:main::@6 main::@6: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 19) goto main::@8 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@8 to:main::@return main::@return: scope:[main] from main::@6 return @@ -1163,7 +1163,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) 20 + (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 (byte) plot::x#1 ← (byte~) line::$1 (byte~) plot::x#4 ← (byte) plot::x#1 call plot param-assignment @@ -1200,24 +1200,24 @@ main: scope:[main] from @3 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@7 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte~) main::i#4 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte~) main::i#4 ) [ main::i#2 ] [3] (byte) line::l#0 ← (byte) main::i#2 [ main::i#2 line::l#0 ] [4] (byte~) line::l#4 ← (byte) line::l#0 [ main::i#2 line::l#4 ] [5] call line param-assignment [ main::i#2 ] to:main::@5 main::@5: scope:[main] from main::@1 [6] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [7] if((byte) main::i#1!=(byte) 9) goto main::@7 [ main::i#1 ] + [7] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@7 [ main::i#1 ] to:main::@2 main::@2: scope:[main] from main::@5 main::@8 - [8] (byte) main::j#2 ← phi( main::@5/(byte) 10 main::@8/(byte~) main::j#4 ) [ main::j#2 ] + [8] (byte) main::j#2 ← phi( main::@5/(byte/signed byte/word/signed word) 10 main::@8/(byte~) main::j#4 ) [ main::j#2 ] [9] (byte) line::l#1 ← (byte) main::j#2 [ main::j#2 line::l#1 ] [10] (byte~) line::l#5 ← (byte) line::l#1 [ main::j#2 line::l#5 ] [11] call line param-assignment [ main::j#2 ] to:main::@6 main::@6: scope:[main] from main::@2 [12] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] - [13] if((byte) main::j#1!=(byte) 19) goto main::@8 [ main::j#1 ] + [13] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@8 [ main::j#1 ] to:main::@return main::@return: scope:[main] from main::@6 [14] return [ ] @@ -1235,7 +1235,7 @@ line: scope:[line] from main::@1 main::@2 [20] call plot param-assignment [ line::l#2 ] to:line::@1 line::@1: scope:[line] from line - [21] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] + [21] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] [22] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] [23] (byte~) plot::x#4 ← (byte) plot::x#1 [ plot::x#4 ] [24] call plot param-assignment [ ] @@ -1277,22 +1277,22 @@ main: scope:[main] from @3 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte) main::i#1 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::i#1 ) [ main::i#2 ] [3] (byte) line::l#0 ← (byte) main::i#2 [ main::i#2 line::l#0 ] [4] call line param-assignment [ main::i#2 ] to:main::@5 main::@5: scope:[main] from main::@1 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1!=(byte) 9) goto main::@1 [ main::i#1 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 [ main::i#1 ] to:main::@2 main::@2: scope:[main] from main::@5 main::@6 - [7] (byte) main::j#2 ← phi( main::@5/(byte) 10 main::@6/(byte) main::j#1 ) [ main::j#2 ] + [7] (byte) main::j#2 ← phi( main::@5/(byte/signed byte/word/signed word) 10 main::@6/(byte) main::j#1 ) [ main::j#2 ] [8] (byte) line::l#1 ← (byte) main::j#2 [ main::j#2 line::l#1 ] [9] call line param-assignment [ main::j#2 ] to:main::@6 main::@6: scope:[main] from main::@2 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] - [11] if((byte) main::j#1!=(byte) 19) goto main::@2 [ main::j#1 ] + [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 [ main::j#1 ] to:main::@return main::@return: scope:[main] from main::@6 [12] return [ ] @@ -1303,7 +1303,7 @@ line: scope:[line] from main::@1 main::@2 [15] call plot param-assignment [ line::l#2 ] to:line::@1 line::@1: scope:[line] from line - [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] + [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] [17] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] [18] call plot param-assignment [ ] to:line::@return @@ -1329,22 +1329,22 @@ main: scope:[main] from @3 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] (byte) line::l#0 ← (byte) main::i#2 [ main::i#2 line::l#0 ] ( main:0 [ main::i#2 line::l#0 ] ) [4] call line param-assignment [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@5 main::@5: scope:[main] from main::@1 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@5 main::@6 - [7] (byte) main::j#2 ← phi( main::@5/(byte) 10 main::@6/(byte) main::j#1 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) + [7] (byte) main::j#2 ← phi( main::@5/(byte/signed byte/word/signed word) 10 main::@6/(byte) main::j#1 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) [8] (byte) line::l#1 ← (byte) main::j#2 [ main::j#2 line::l#1 ] ( main:0 [ main::j#2 line::l#1 ] ) [9] call line param-assignment [ main::j#2 ] ( main:0 [ main::j#2 ] ) to:main::@6 main::@6: scope:[main] from main::@2 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) - [11] if((byte) main::j#1!=(byte) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) to:main::@return main::@return: scope:[main] from main::@6 [12] return [ ] ( main:0 [ ] ) @@ -1355,7 +1355,7 @@ line: scope:[line] from main::@1 main::@2 [15] call plot param-assignment [ line::l#2 ] ( main:0::line:4 [ main::i#2 line::l#2 ] main:0::line:9 [ main::j#2 line::l#2 ] ) to:line::@1 line::@1: scope:[line] from line - [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) + [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) [17] (byte) plot::x#1 ← (byte~) line::$1 [ plot::x#1 ] ( main:0::line:4 [ main::i#2 plot::x#1 ] main:0::line:9 [ main::j#2 plot::x#1 ] ) [18] call plot param-assignment [ ] ( main:0::line:4 [ main::i#2 ] main:0::line:9 [ main::j#2 ] ) to:line::@return @@ -1372,19 +1372,19 @@ plot::@return: scope:[plot] from plot DOMINATORS @begin dominated by @begin -@3 dominated by @3 @begin -@end dominated by @3 @end @begin -main dominated by @3 @begin main -main::@1 dominated by @3 @begin main::@1 main -main::@5 dominated by @3 @begin main::@1 main::@5 main -main::@2 dominated by @3 @begin main::@2 main::@1 main main::@5 -main::@6 dominated by @3 @begin main::@2 main::@1 main::@6 main main::@5 -main::@return dominated by @3 @begin main::@2 main::@1 main::@6 main main::@5 main::@return -line dominated by @3 @begin line main::@1 main -line::@1 dominated by @3 @begin line::@1 line main::@1 main -line::@return dominated by @3 @begin line::@1 line main::@1 line::@return main -plot dominated by @3 @begin line main::@1 plot main -plot::@return dominated by @3 @begin line main::@1 plot::@return plot main +@3 dominated by @begin @3 +@end dominated by @begin @end @3 +main dominated by @begin main @3 +main::@1 dominated by @begin main @3 main::@1 +main::@5 dominated by @begin main @3 main::@1 main::@5 +main::@2 dominated by @begin main @3 main::@1 main::@2 main::@5 +main::@6 dominated by @begin main @3 main::@1 main::@2 main::@5 main::@6 +main::@return dominated by main::@return @begin main @3 main::@1 main::@2 main::@5 main::@6 +line dominated by @begin line main @3 main::@1 +line::@1 dominated by @begin line line::@1 main @3 main::@1 +line::@return dominated by @begin line line::@1 main @3 main::@1 line::@return +plot dominated by @begin line main @3 plot main::@1 +plot::@return dominated by @begin line main @3 plot main::@1 plot::@return Found back edge: Loop head: main::@1 tails: main::@5 blocks: null Found back edge: Loop head: main::@2 tails: main::@6 blocks: null @@ -1468,7 +1468,7 @@ main: { .label j = 3 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -1491,13 +1491,13 @@ main: { b5: //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG19 [6] if((byte) main::i#1!=(byte) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #9 bne b1_from_b5 //SEG20 [7] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG21 [7] phi (byte) main::j#2 = (byte) 10 [phi:main::@5->main::@2#0] -- zpby1=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 10 [phi:main::@5->main::@2#0] -- zpby1=coby1 lda #$a sta j jmp b2 @@ -1520,7 +1520,7 @@ main: { b6: //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1=_inc_zpby1 inc j - //SEG31 [11] if((byte) main::j#1!=(byte) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 lda j cmp #$13 bne b2_from_b6 @@ -1545,7 +1545,7 @@ line: { jmp b1 //SEG39 line::@1 b1: - //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- zpby1=zpby2_plus_coby1 + //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- zpby1=zpby2_plus_coby1 lda l clc adc #$14 @@ -1579,12 +1579,12 @@ plot: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) always clobbers reg byte a +Statement [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$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 [21] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:0::line:4::plot:15 [ main::i#2 line::l#2 ] main:0::line:9::plot:15 [ main::j#2 line::l#2 ] main:0::line:4::plot:18 [ main::i#2 ] main:0::line:9::plot:18 [ 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 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) always clobbers reg byte a +Statement [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) always clobbers reg byte a Statement [21] *((const byte*) SCREEN#0 + (byte) plot::x#2) ← (byte) '*' [ ] ( main:0::line:4::plot:15 [ main::i#2 line::l#2 ] main:0::line:9::plot:15 [ main::j#2 line::l#2 ] main:0::line:4::plot:18 [ main::i#2 ] main:0::line:9::plot:18 [ 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 , @@ -1634,7 +1634,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 jmp b1 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] @@ -1653,12 +1653,12 @@ main: { b5: //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG19 [6] if((byte) main::i#1!=(byte) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #9 bne b1_from_b5 //SEG20 [7] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG21 [7] phi (byte) main::j#2 = (byte) 10 [phi:main::@5->main::@2#0] -- yby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 10 [phi:main::@5->main::@2#0] -- yby=coby1 ldy #$a jmp b2 //SEG22 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] @@ -1677,7 +1677,7 @@ main: { b6: //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby=_inc_yby iny - //SEG31 [11] if((byte) main::j#1!=(byte) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 cpy #$13 bne b2_from_b6 //SEG32 main::@return @@ -1696,7 +1696,7 @@ line: { jsr plot //SEG39 line::@1 b1: - //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 + //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #$14 @@ -1750,7 +1750,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 jmp b1 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] @@ -1768,12 +1768,12 @@ main: { b5: //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG19 [6] if((byte) main::i#1!=(byte) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #9 bne b1 //SEG20 [7] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG21 [7] phi (byte) main::j#2 = (byte) 10 [phi:main::@5->main::@2#0] -- yby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 10 [phi:main::@5->main::@2#0] -- yby=coby1 ldy #$a jmp b2 //SEG22 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] @@ -1791,7 +1791,7 @@ main: { b6: //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby=_inc_yby iny - //SEG31 [11] if((byte) main::j#1!=(byte) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 cpy #$13 bne b2 //SEG32 main::@return @@ -1810,7 +1810,7 @@ line: { jsr plot //SEG39 line::@1 b1: - //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 + //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #$14 @@ -1869,7 +1869,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 jmp b1 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] @@ -1885,11 +1885,11 @@ main: { //SEG17 main::@5 //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG19 [6] if((byte) main::i#1!=(byte) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #9 bne b1 //SEG20 [7] phi from main::@5 to main::@2 [phi:main::@5->main::@2] - //SEG21 [7] phi (byte) main::j#2 = (byte) 10 [phi:main::@5->main::@2#0] -- yby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 10 [phi:main::@5->main::@2#0] -- yby=coby1 ldy #$a jmp b2 //SEG22 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] @@ -1905,7 +1905,7 @@ main: { //SEG29 main::@6 //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby=_inc_yby iny - //SEG31 [11] if((byte) main::j#1!=(byte) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 cpy #$13 bne b2 //SEG32 main::@return @@ -1921,7 +1921,7 @@ line: { //SEG38 [20] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy jsr plot //SEG39 line::@1 - //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 + //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #$14 @@ -1965,7 +1965,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy @@ -1980,11 +1980,11 @@ main: { //SEG17 main::@5 //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG19 [6] if((byte) main::i#1!=(byte) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #9 bne b1 //SEG20 [7] phi from main::@5 to main::@2 [phi:main::@5->main::@2] - //SEG21 [7] phi (byte) main::j#2 = (byte) 10 [phi:main::@5->main::@2#0] -- yby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 10 [phi:main::@5->main::@2#0] -- yby=coby1 ldy #$a //SEG22 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] //SEG23 [7] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy @@ -1999,7 +1999,7 @@ main: { //SEG29 main::@6 //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby=_inc_yby iny - //SEG31 [11] if((byte) main::j#1!=(byte) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 cpy #$13 bne b2 //SEG32 main::@return @@ -2015,7 +2015,7 @@ line: { //SEG38 [20] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy jsr plot //SEG39 line::@1 - //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 + //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #$14 @@ -2045,7 +2045,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) line((byte) line::l) (byte~) line::$1 reg byte a 4.0 (label) line::@1 @@ -2095,7 +2095,7 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@1#0] -- register_copy @@ -2110,11 +2110,11 @@ main: { //SEG17 main::@5 //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG19 [6] if((byte) main::i#1!=(byte) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 9) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #9 bne b1 //SEG20 [7] phi from main::@5 to main::@2 [phi:main::@5->main::@2] - //SEG21 [7] phi (byte) main::j#2 = (byte) 10 [phi:main::@5->main::@2#0] -- yby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 10 [phi:main::@5->main::@2#0] -- yby=coby1 ldy #$a //SEG22 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] //SEG23 [7] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy @@ -2129,7 +2129,7 @@ main: { //SEG29 main::@6 //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby=_inc_yby iny - //SEG31 [11] if((byte) main::j#1!=(byte) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 19) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- yby_neq_coby1_then_la1 cpy #$13 bne b2 //SEG32 main::@return @@ -2145,7 +2145,7 @@ line: { //SEG38 [20] phi (byte) plot::x#2 = (byte) plot::x#0 [phi:line->plot#0] -- register_copy jsr plot //SEG39 line::@1 - //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 + //SEG40 [16] (byte~) line::$1 ← (byte) line::l#2 + (byte/signed byte/word/signed word) 20 [ line::$1 ] ( main:0::line:4 [ main::i#2 line::$1 ] main:0::line:9 [ main::j#2 line::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #$14 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.sym b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.sym index 072189008..534ffe203 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) line((byte) line::l) (byte~) line::$1 reg byte a 4.0 (label) line::@1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.cfg b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.cfg index 76451e94e..226cf1579 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.cfg @@ -8,31 +8,31 @@ main: scope:[main] from @2 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@7 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] (byte) plot::x#0 ← (byte) main::i#2 [ main::i#2 plot::x#0 ] ( main:0 [ main::i#2 plot::x#0 ] ) [4] call plot param-assignment [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@7 main::@7: scope:[main] from main::@1 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@7 main::@8 - [7] (byte) main::j#2 ← phi( main::@7/(byte) 0 main::@8/(byte) main::j#1 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) + [7] (byte) main::j#2 ← phi( main::@7/(byte/signed byte/word/signed word) 0 main::@8/(byte) main::j#1 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) [8] (byte) plot::x#1 ← (byte) main::j#2 [ main::j#2 plot::x#1 ] ( main:0 [ main::j#2 plot::x#1 ] ) [9] call plot param-assignment [ main::j#2 ] ( main:0 [ main::j#2 ] ) to:main::@8 main::@8: scope:[main] from main::@2 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) - [11] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) to:main::@3 main::@3: scope:[main] from main::@8 main::@9 - [12] (byte) main::k#2 ← phi( main::@8/(byte) 0 main::@9/(byte) main::k#1 ) [ main::k#2 ] ( main:0 [ main::k#2 ] ) + [12] (byte) main::k#2 ← phi( main::@8/(byte/signed byte/word/signed word) 0 main::@9/(byte) main::k#1 ) [ main::k#2 ] ( main:0 [ main::k#2 ] ) [13] (byte) plot::x#2 ← (byte) main::k#2 [ main::k#2 plot::x#2 ] ( main:0 [ main::k#2 plot::x#2 ] ) [14] call plot param-assignment [ main::k#2 ] ( main:0 [ main::k#2 ] ) to:main::@9 main::@9: scope:[main] from main::@3 [15] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] ( main:0 [ main::k#1 ] ) - [16] if((byte) main::k#1!=(byte) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) + [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) to:main::@return main::@return: scope:[main] from main::@9 [17] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.log b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.log index 623cb8f3d..b6b2c374c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.log @@ -19,25 +19,25 @@ void plot(byte x) { } PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: (void~) main::$0 ← call plot (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 11 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 main::@2: (void~) main::$2 ← call plot (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$3 ← (byte) main::j != (byte) 11 + (boolean~) main::$3 ← (byte) main::j != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 - (byte) main::k ← (byte) 0 + (byte) main::k ← (byte/signed byte/word/signed word) 0 main::@3: (void~) main::$4 ← call plot (byte) main::k (byte) main::k ← ++ (byte) main::k - (boolean~) main::$5 ← (byte) main::k != (byte) 11 + (boolean~) main::$5 ← (byte) main::k != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 main::@return: return @@ -71,33 +71,33 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (void~) main::$0 ← call plot (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 11 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@1 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@4 (void~) main::$2 ← call plot (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$3 ← (byte) main::j != (byte) 11 + (boolean~) main::$3 ← (byte) main::j != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 - (byte) main::k ← (byte) 0 + (byte) main::k ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@3 main::@5 (void~) main::$4 ← call plot (byte) main::k (byte) main::k ← ++ (byte) main::k - (boolean~) main::$5 ← (byte) main::k != (byte) 11 + (boolean~) main::$5 ← (byte) main::k != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@6 main::@6: scope:[main] from main::@3 @@ -122,33 +122,33 @@ Removing empty block main::@6 Removing empty block @1 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@2 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (void~) main::$0 ← call plot (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 11 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@1 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@4 (void~) main::$2 ← call plot (byte) main::j (byte) main::j ← ++ (byte) main::j - (boolean~) main::$3 ← (byte) main::j != (byte) 11 + (boolean~) main::$3 ← (byte) main::j != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@2 - (byte) main::k ← (byte) 0 + (byte) main::k ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@3 main::@5 (void~) main::$4 ← call plot (byte) main::k (byte) main::k ← ++ (byte) main::k - (boolean~) main::$5 ← (byte) main::k != (byte) 11 + (boolean~) main::$5 ← (byte) main::k != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@return main::@return: scope:[main] from main::@3 @@ -169,10 +169,10 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@7 (byte) plot::x ← (byte) main::i @@ -180,11 +180,11 @@ main::@1: scope:[main] from main main::@7 to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i != (byte) 11 + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@4 main::@8 (byte) plot::x ← (byte) main::j @@ -192,11 +192,11 @@ main::@2: scope:[main] from main::@4 main::@8 to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j ← ++ (byte) main::j - (boolean~) main::$3 ← (byte) main::j != (byte) 11 + (boolean~) main::$3 ← (byte) main::j != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 - (byte) main::k ← (byte) 0 + (byte) main::k ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@5 main::@9 (byte) plot::x ← (byte) main::k @@ -204,7 +204,7 @@ main::@3: scope:[main] from main::@5 main::@9 to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k ← ++ (byte) main::k - (boolean~) main::$5 ← (byte) main::k != (byte) 11 + (boolean~) main::$5 ← (byte) main::k != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 @@ -229,11 +229,11 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@7 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#5 main::@7/(byte*) SCREEN#6 ) @@ -245,12 +245,12 @@ main::@7: scope:[main] from main::@1 (byte*) SCREEN#6 ← phi( main::@1/(byte*) SCREEN#2 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 (byte*) SCREEN#7 ← phi( main::@7/(byte*) SCREEN#6 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@4 main::@8 (byte*) SCREEN#3 ← phi( main::@4/(byte*) SCREEN#7 main::@8/(byte*) SCREEN#8 ) @@ -262,12 +262,12 @@ main::@8: scope:[main] from main::@2 (byte*) SCREEN#8 ← phi( main::@2/(byte*) SCREEN#3 ) (byte) main::j#3 ← phi( main::@2/(byte) main::j#2 ) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 (byte*) SCREEN#9 ← phi( main::@8/(byte*) SCREEN#8 ) - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@5 main::@9 (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#9 main::@9/(byte*) SCREEN#10 ) @@ -279,7 +279,7 @@ main::@9: scope:[main] from main::@3 (byte*) SCREEN#10 ← phi( main::@3/(byte*) SCREEN#4 ) (byte) main::k#3 ← phi( main::@3/(byte) main::k#2 ) (byte) main::k#1 ← ++ (byte) main::k#3 - (boolean~) main::$5 ← (byte) main::k#1 != (byte) 11 + (boolean~) main::$5 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 @@ -303,11 +303,11 @@ plot::@return: scope:[plot] from plot CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@7 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#5 main::@7/(byte*) SCREEN#6 ) @@ -319,12 +319,12 @@ main::@7: scope:[main] from main::@1 (byte*) SCREEN#6 ← phi( main::@1/(byte*) SCREEN#2 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 (byte*) SCREEN#7 ← phi( main::@7/(byte*) SCREEN#6 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@4 main::@8 (byte*) SCREEN#3 ← phi( main::@4/(byte*) SCREEN#7 main::@8/(byte*) SCREEN#8 ) @@ -336,12 +336,12 @@ main::@8: scope:[main] from main::@2 (byte*) SCREEN#8 ← phi( main::@2/(byte*) SCREEN#3 ) (byte) main::j#3 ← phi( main::@2/(byte) main::j#2 ) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 (byte*) SCREEN#9 ← phi( main::@8/(byte*) SCREEN#8 ) - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@5 main::@9 (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#9 main::@9/(byte*) SCREEN#10 ) @@ -353,7 +353,7 @@ main::@9: scope:[main] from main::@3 (byte*) SCREEN#10 ← phi( main::@3/(byte*) SCREEN#4 ) (byte) main::k#3 ← phi( main::@3/(byte) main::k#2 ) (byte) main::k#1 ← ++ (byte) main::k#3 - (boolean~) main::$5 ← (byte) main::k#1 != (byte) 11 + (boolean~) main::$5 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 @@ -433,11 +433,11 @@ Culled Empty Block (label) @3 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@7 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#5 main::@7/(byte*) SCREEN#6 ) @@ -449,12 +449,12 @@ main::@7: scope:[main] from main::@1 (byte*) SCREEN#6 ← phi( main::@1/(byte*) SCREEN#2 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 (byte*) SCREEN#7 ← phi( main::@7/(byte*) SCREEN#6 ) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@4 main::@8 (byte*) SCREEN#3 ← phi( main::@4/(byte*) SCREEN#7 main::@8/(byte*) SCREEN#8 ) @@ -466,12 +466,12 @@ main::@8: scope:[main] from main::@2 (byte*) SCREEN#8 ← phi( main::@2/(byte*) SCREEN#3 ) (byte) main::j#3 ← phi( main::@2/(byte) main::j#2 ) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 (byte*) SCREEN#9 ← phi( main::@8/(byte*) SCREEN#8 ) - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@5 main::@9 (byte*) SCREEN#4 ← phi( main::@5/(byte*) SCREEN#9 main::@9/(byte*) SCREEN#10 ) @@ -483,7 +483,7 @@ main::@9: scope:[main] from main::@3 (byte*) SCREEN#10 ← phi( main::@3/(byte*) SCREEN#4 ) (byte) main::k#3 ← phi( main::@3/(byte) main::k#2 ) (byte) main::k#1 ← ++ (byte) main::k#3 - (boolean~) main::$5 ← (byte) main::k#1 != (byte) 11 + (boolean~) main::$5 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 @@ -516,10 +516,10 @@ Alias (byte*) SCREEN#10 = (byte*) SCREEN#4 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@7 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 main::@7/(byte*) SCREEN#2 ) @@ -529,11 +529,11 @@ main::@1: scope:[main] from main main::@7 to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@4 main::@8 (byte*) SCREEN#3 ← phi( main::@4/(byte*) SCREEN#2 main::@8/(byte*) SCREEN#3 ) @@ -543,11 +543,11 @@ main::@2: scope:[main] from main::@4 main::@8 to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@5 main::@9 (byte*) SCREEN#10 ← phi( main::@5/(byte*) SCREEN#3 main::@9/(byte*) SCREEN#10 ) @@ -557,7 +557,7 @@ main::@3: scope:[main] from main::@5 main::@9 to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k#1 ← ++ (byte) main::k#2 - (boolean~) main::$5 ← (byte) main::k#1 != (byte) 11 + (boolean~) main::$5 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 @@ -585,10 +585,10 @@ Self Phi Eliminated (byte*) SCREEN#10 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@7 (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 ) @@ -598,11 +598,11 @@ main::@1: scope:[main] from main main::@7 to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@4 main::@8 (byte*) SCREEN#3 ← phi( main::@4/(byte*) SCREEN#2 ) @@ -612,11 +612,11 @@ main::@2: scope:[main] from main::@4 main::@8 to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@5 main::@9 (byte*) SCREEN#10 ← phi( main::@5/(byte*) SCREEN#3 ) @@ -626,7 +626,7 @@ main::@3: scope:[main] from main::@5 main::@9 to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k#1 ← ++ (byte) main::k#2 - (boolean~) main::$5 ← (byte) main::k#1 != (byte) 11 + (boolean~) main::$5 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 @@ -651,10 +651,10 @@ Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#3 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@7 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@7/(byte) main::i#1 ) @@ -663,11 +663,11 @@ main::@1: scope:[main] from main main::@7 to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@4 main::@8 (byte) main::j#2 ← phi( main::@4/(byte) main::j#0 main::@8/(byte) main::j#1 ) @@ -676,11 +676,11 @@ main::@2: scope:[main] from main::@4 main::@8 to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@5 main::@9 (byte) main::k#2 ← phi( main::@5/(byte) main::k#0 main::@9/(byte) main::k#1 ) @@ -689,7 +689,7 @@ main::@3: scope:[main] from main::@5 main::@9 to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k#1 ← ++ (byte) main::k#2 - (boolean~) main::$5 ← (byte) main::k#1 != (byte) 11 + (boolean~) main::$5 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 @@ -712,10 +712,10 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@7 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@7/(byte) main::i#1 ) @@ -724,11 +724,11 @@ main::@1: scope:[main] from main main::@7 to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$1 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$1) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@4 main::@8 (byte) main::j#2 ← phi( main::@4/(byte) main::j#0 main::@8/(byte) main::j#1 ) @@ -737,11 +737,11 @@ main::@2: scope:[main] from main::@4 main::@8 to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$3 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@5 main::@9 (byte) main::k#2 ← phi( main::@5/(byte) main::k#0 main::@9/(byte) main::k#1 ) @@ -750,7 +750,7 @@ main::@3: scope:[main] from main::@5 main::@9 to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k#1 ← ++ (byte) main::k#2 - (boolean~) main::$5 ← (byte) main::k#1 != (byte) 11 + (boolean~) main::$5 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$5) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 @@ -768,16 +768,16 @@ plot::@return: scope:[plot] from plot to:@end @end: scope:[] from @2 -Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte) 11) goto main::@1 -Simple Condition (boolean~) main::$3 if((byte) main::j#1!=(byte) 11) goto main::@2 -Simple Condition (boolean~) main::$5 if((byte) main::k#1!=(byte) 11) goto main::@3 +Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 +Simple Condition (boolean~) main::$3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 +Simple Condition (boolean~) main::$5 if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@2 main: scope:[main] from @2 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@7 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@7/(byte) main::i#1 ) @@ -786,10 +786,10 @@ main::@1: scope:[main] from main main::@7 to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@4 main::@8 (byte) main::j#2 ← phi( main::@4/(byte) main::j#0 main::@8/(byte) main::j#1 ) @@ -798,10 +798,10 @@ main::@2: scope:[main] from main::@4 main::@8 to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 - (byte) main::k#0 ← (byte) 0 + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 to:main::@3 main::@3: scope:[main] from main::@5 main::@9 (byte) main::k#2 ← phi( main::@5/(byte) main::k#0 main::@9/(byte) main::k#1 ) @@ -810,7 +810,7 @@ main::@3: scope:[main] from main::@5 main::@9 to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k#1 ← ++ (byte) main::k#2 - if((byte) main::k#1!=(byte) 11) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 return @@ -844,7 +844,7 @@ main::@1: scope:[main] from main main::@7 to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@7 to:main::@2 @@ -855,7 +855,7 @@ main::@2: scope:[main] from main::@4 main::@8 to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 to:main::@5 main::@5: scope:[main] from main::@8 to:main::@3 @@ -866,7 +866,7 @@ main::@3: scope:[main] from main::@5 main::@9 to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k#1 ← ++ (byte) main::k#2 - if((byte) main::k#1!=(byte) 11) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 return @@ -898,7 +898,7 @@ main::@1: scope:[main] from main main::@7 to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@7 main::@8 (byte) main::j#2 ← phi( main::@7/(const byte) main::j#0 main::@8/(byte) main::j#1 ) @@ -907,7 +907,7 @@ main::@2: scope:[main] from main::@7 main::@8 to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@8 main::@9 (byte) main::k#2 ← phi( main::@8/(const byte) main::k#0 main::@9/(byte) main::k#1 ) @@ -916,7 +916,7 @@ main::@3: scope:[main] from main::@8 main::@9 to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k#1 ← ++ (byte) main::k#2 - if((byte) main::k#1!=(byte) 11) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 return @@ -945,9 +945,9 @@ Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::k#0 Inlining constant with var siblings (const byte) main::k#0 -Constant inlined main::k#0 = (byte) 0 -Constant inlined main::j#0 = (byte) 0 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::k#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::j#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -955,31 +955,31 @@ CONTROL FLOW GRAPH main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main main::@7 - (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte) main::i#1 ) (byte) plot::x#0 ← (byte) main::i#2 call plot param-assignment to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@7 main::@8 - (byte) main::j#2 ← phi( main::@7/(byte) 0 main::@8/(byte) main::j#1 ) + (byte) main::j#2 ← phi( main::@7/(byte/signed byte/word/signed word) 0 main::@8/(byte) main::j#1 ) (byte) plot::x#1 ← (byte) main::j#2 call plot param-assignment to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@8 main::@9 - (byte) main::k#2 ← phi( main::@8/(byte) 0 main::@9/(byte) main::k#1 ) + (byte) main::k#2 ← phi( main::@8/(byte/signed byte/word/signed word) 0 main::@9/(byte) main::k#1 ) (byte) plot::x#2 ← (byte) main::k#2 call plot param-assignment to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k#1 ← ++ (byte) main::k#2 - if((byte) main::k#1!=(byte) 11) goto main::@3 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 to:main::@return main::@return: scope:[main] from main::@9 return @@ -1001,7 +1001,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -1042,34 +1042,34 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main main::@10 - (byte) main::i#2 ← phi( main/(byte) 0 main::@10/(byte~) main::i#4 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@10/(byte~) main::i#4 ) (byte) plot::x#0 ← (byte) main::i#2 (byte~) plot::x#4 ← (byte) plot::x#0 call plot param-assignment to:main::@7 main::@7: scope:[main] from main::@1 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@10 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@10 to:main::@2 main::@2: scope:[main] from main::@11 main::@7 - (byte) main::j#2 ← phi( main::@7/(byte) 0 main::@11/(byte~) main::j#4 ) + (byte) main::j#2 ← phi( main::@7/(byte/signed byte/word/signed word) 0 main::@11/(byte~) main::j#4 ) (byte) plot::x#1 ← (byte) main::j#2 (byte~) plot::x#5 ← (byte) plot::x#1 call plot param-assignment to:main::@8 main::@8: scope:[main] from main::@2 (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@11 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@11 to:main::@3 main::@3: scope:[main] from main::@12 main::@8 - (byte) main::k#2 ← phi( main::@8/(byte) 0 main::@12/(byte~) main::k#4 ) + (byte) main::k#2 ← phi( main::@8/(byte/signed byte/word/signed word) 0 main::@12/(byte~) main::k#4 ) (byte) plot::x#2 ← (byte) main::k#2 (byte~) plot::x#6 ← (byte) plot::x#2 call plot param-assignment to:main::@9 main::@9: scope:[main] from main::@3 (byte) main::k#1 ← ++ (byte) main::k#2 - if((byte) main::k#1!=(byte) 11) goto main::@12 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@12 to:main::@return main::@return: scope:[main] from main::@9 return @@ -1111,34 +1111,34 @@ main: scope:[main] from @2 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@10 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@10/(byte~) main::i#4 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@10/(byte~) main::i#4 ) [ main::i#2 ] [3] (byte) plot::x#0 ← (byte) main::i#2 [ main::i#2 plot::x#0 ] [4] (byte~) plot::x#4 ← (byte) plot::x#0 [ main::i#2 plot::x#4 ] [5] call plot param-assignment [ main::i#2 ] to:main::@7 main::@7: scope:[main] from main::@1 [6] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [7] if((byte) main::i#1!=(byte) 11) goto main::@10 [ main::i#1 ] + [7] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@10 [ main::i#1 ] to:main::@2 main::@2: scope:[main] from main::@11 main::@7 - [8] (byte) main::j#2 ← phi( main::@7/(byte) 0 main::@11/(byte~) main::j#4 ) [ main::j#2 ] + [8] (byte) main::j#2 ← phi( main::@7/(byte/signed byte/word/signed word) 0 main::@11/(byte~) main::j#4 ) [ main::j#2 ] [9] (byte) plot::x#1 ← (byte) main::j#2 [ main::j#2 plot::x#1 ] [10] (byte~) plot::x#5 ← (byte) plot::x#1 [ main::j#2 plot::x#5 ] [11] call plot param-assignment [ main::j#2 ] to:main::@8 main::@8: scope:[main] from main::@2 [12] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] - [13] if((byte) main::j#1!=(byte) 11) goto main::@11 [ main::j#1 ] + [13] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@11 [ main::j#1 ] to:main::@3 main::@3: scope:[main] from main::@12 main::@8 - [14] (byte) main::k#2 ← phi( main::@8/(byte) 0 main::@12/(byte~) main::k#4 ) [ main::k#2 ] + [14] (byte) main::k#2 ← phi( main::@8/(byte/signed byte/word/signed word) 0 main::@12/(byte~) main::k#4 ) [ main::k#2 ] [15] (byte) plot::x#2 ← (byte) main::k#2 [ main::k#2 plot::x#2 ] [16] (byte~) plot::x#6 ← (byte) plot::x#2 [ main::k#2 plot::x#6 ] [17] call plot param-assignment [ main::k#2 ] to:main::@9 main::@9: scope:[main] from main::@3 [18] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] - [19] if((byte) main::k#1!=(byte) 11) goto main::@12 [ main::k#1 ] + [19] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@12 [ main::k#1 ] to:main::@return main::@return: scope:[main] from main::@9 [20] return [ ] @@ -1187,31 +1187,31 @@ main: scope:[main] from @2 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@7 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte) main::i#1 ) [ main::i#2 ] [3] (byte) plot::x#0 ← (byte) main::i#2 [ main::i#2 plot::x#0 ] [4] call plot param-assignment [ main::i#2 ] to:main::@7 main::@7: scope:[main] from main::@1 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] to:main::@2 main::@2: scope:[main] from main::@7 main::@8 - [7] (byte) main::j#2 ← phi( main::@7/(byte) 0 main::@8/(byte) main::j#1 ) [ main::j#2 ] + [7] (byte) main::j#2 ← phi( main::@7/(byte/signed byte/word/signed word) 0 main::@8/(byte) main::j#1 ) [ main::j#2 ] [8] (byte) plot::x#1 ← (byte) main::j#2 [ main::j#2 plot::x#1 ] [9] call plot param-assignment [ main::j#2 ] to:main::@8 main::@8: scope:[main] from main::@2 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] - [11] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] + [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] to:main::@3 main::@3: scope:[main] from main::@8 main::@9 - [12] (byte) main::k#2 ← phi( main::@8/(byte) 0 main::@9/(byte) main::k#1 ) [ main::k#2 ] + [12] (byte) main::k#2 ← phi( main::@8/(byte/signed byte/word/signed word) 0 main::@9/(byte) main::k#1 ) [ main::k#2 ] [13] (byte) plot::x#2 ← (byte) main::k#2 [ main::k#2 plot::x#2 ] [14] call plot param-assignment [ main::k#2 ] to:main::@9 main::@9: scope:[main] from main::@3 [15] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] - [16] if((byte) main::k#1!=(byte) 11) goto main::@3 [ main::k#1 ] + [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::k#1 ] to:main::@return main::@return: scope:[main] from main::@9 [17] return [ ] @@ -1235,31 +1235,31 @@ main: scope:[main] from @2 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@7 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@7/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [3] (byte) plot::x#0 ← (byte) main::i#2 [ main::i#2 plot::x#0 ] ( main:0 [ main::i#2 plot::x#0 ] ) [4] call plot param-assignment [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@7 main::@7: scope:[main] from main::@1 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@7 main::@8 - [7] (byte) main::j#2 ← phi( main::@7/(byte) 0 main::@8/(byte) main::j#1 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) + [7] (byte) main::j#2 ← phi( main::@7/(byte/signed byte/word/signed word) 0 main::@8/(byte) main::j#1 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) [8] (byte) plot::x#1 ← (byte) main::j#2 [ main::j#2 plot::x#1 ] ( main:0 [ main::j#2 plot::x#1 ] ) [9] call plot param-assignment [ main::j#2 ] ( main:0 [ main::j#2 ] ) to:main::@8 main::@8: scope:[main] from main::@2 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) - [11] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) to:main::@3 main::@3: scope:[main] from main::@8 main::@9 - [12] (byte) main::k#2 ← phi( main::@8/(byte) 0 main::@9/(byte) main::k#1 ) [ main::k#2 ] ( main:0 [ main::k#2 ] ) + [12] (byte) main::k#2 ← phi( main::@8/(byte/signed byte/word/signed word) 0 main::@9/(byte) main::k#1 ) [ main::k#2 ] ( main:0 [ main::k#2 ] ) [13] (byte) plot::x#2 ← (byte) main::k#2 [ main::k#2 plot::x#2 ] ( main:0 [ main::k#2 plot::x#2 ] ) [14] call plot param-assignment [ main::k#2 ] ( main:0 [ main::k#2 ] ) to:main::@9 main::@9: scope:[main] from main::@3 [15] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] ( main:0 [ main::k#1 ] ) - [16] if((byte) main::k#1!=(byte) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) + [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) to:main::@return main::@return: scope:[main] from main::@9 [17] return [ ] ( main:0 [ ] ) @@ -1274,18 +1274,18 @@ plot::@return: scope:[plot] from plot DOMINATORS @begin dominated by @begin -@2 dominated by @2 @begin -@end dominated by @2 @end @begin -main dominated by @2 @begin main -main::@1 dominated by @2 @begin main::@1 main -main::@7 dominated by main::@7 @2 @begin main::@1 main -main::@2 dominated by main::@7 @2 @begin main::@2 main::@1 main -main::@8 dominated by main::@7 main::@8 @2 @begin main::@2 main::@1 main -main::@3 dominated by main::@7 main::@8 @2 @begin main::@2 main::@1 main::@3 main -main::@9 dominated by main::@7 main::@8 main::@9 @2 @begin main::@2 main::@1 main::@3 main -main::@return dominated by main::@7 main::@8 main::@9 @2 main::@return @begin main::@2 main::@1 main::@3 main -plot dominated by @2 @begin main::@1 plot main -plot::@return dominated by @2 @begin main::@1 plot::@return plot main +@2 dominated by @begin @2 +@end dominated by @begin @end @2 +main dominated by @begin main @2 +main::@1 dominated by @begin main @2 main::@1 +main::@7 dominated by main::@7 @begin main @2 main::@1 +main::@2 dominated by main::@7 @begin main @2 main::@1 main::@2 +main::@8 dominated by main::@7 @begin main::@8 main @2 main::@1 main::@2 +main::@3 dominated by main::@7 @begin main::@8 main @2 main::@1 main::@2 main::@3 +main::@9 dominated by main::@9 main::@7 @begin main::@8 main @2 main::@1 main::@2 main::@3 +main::@return dominated by main::@9 main::@return main::@7 @begin main::@8 main @2 main::@1 main::@2 main::@3 +plot dominated by @begin main @2 plot main::@1 +plot::@return dominated by @begin main @2 plot main::@1 plot::@return Found back edge: Loop head: main::@1 tails: main::@7 blocks: null Found back edge: Loop head: main::@2 tails: main::@8 blocks: null @@ -1369,7 +1369,7 @@ main: { .label k = 4 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -1392,13 +1392,13 @@ main: { b7: //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG19 [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$b bne b1_from_b7 //SEG20 [7] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG21 [7] phi (byte) main::j#2 = (byte) 0 [phi:main::@7->main::@2#0] -- zpby1=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@7->main::@2#0] -- zpby1=coby1 lda #0 sta j jmp b2 @@ -1421,13 +1421,13 @@ main: { b8: //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1=_inc_zpby1 inc j - //SEG31 [11] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 lda j cmp #$b bne b2_from_b8 //SEG32 [12] phi from main::@8 to main::@3 [phi:main::@8->main::@3] b3_from_b8: - //SEG33 [12] phi (byte) main::k#2 = (byte) 0 [phi:main::@8->main::@3#0] -- zpby1=coby1 + //SEG33 [12] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@3#0] -- zpby1=coby1 lda #0 sta k jmp b3 @@ -1450,7 +1450,7 @@ main: { b9: //SEG42 [15] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- zpby1=_inc_zpby1 inc k - //SEG43 [16] if((byte) main::k#1!=(byte) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG43 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- zpby1_neq_coby1_then_la1 lda k cmp #$b bne b3_from_b9 @@ -1525,7 +1525,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@7 to main::@1 [phi:main::@7->main::@1] @@ -1544,12 +1544,12 @@ main: { b7: //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b1_from_b7 //SEG20 [7] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG21 [7] phi (byte) main::j#2 = (byte) 0 [phi:main::@7->main::@2#0] -- xby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@7->main::@2#0] -- xby=coby1 ldx #0 jmp b2 //SEG22 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] @@ -1568,12 +1568,12 @@ main: { b8: //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_inc_xby inx - //SEG31 [11] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b2_from_b8 //SEG32 [12] phi from main::@8 to main::@3 [phi:main::@8->main::@3] b3_from_b8: - //SEG33 [12] phi (byte) main::k#2 = (byte) 0 [phi:main::@8->main::@3#0] -- xby=coby1 + //SEG33 [12] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@3#0] -- xby=coby1 ldx #0 jmp b3 //SEG34 [12] phi from main::@9 to main::@3 [phi:main::@9->main::@3] @@ -1592,7 +1592,7 @@ main: { b9: //SEG42 [15] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby=_inc_xby inx - //SEG43 [16] if((byte) main::k#1!=(byte) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 + //SEG43 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b3_from_b9 //SEG44 main::@return @@ -1639,7 +1639,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@7 to main::@1 [phi:main::@7->main::@1] @@ -1657,12 +1657,12 @@ main: { b7: //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b1 //SEG20 [7] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG21 [7] phi (byte) main::j#2 = (byte) 0 [phi:main::@7->main::@2#0] -- xby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@7->main::@2#0] -- xby=coby1 ldx #0 jmp b2 //SEG22 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] @@ -1680,12 +1680,12 @@ main: { b8: //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_inc_xby inx - //SEG31 [11] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b2 //SEG32 [12] phi from main::@8 to main::@3 [phi:main::@8->main::@3] b3_from_b8: - //SEG33 [12] phi (byte) main::k#2 = (byte) 0 [phi:main::@8->main::@3#0] -- xby=coby1 + //SEG33 [12] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@3#0] -- xby=coby1 ldx #0 jmp b3 //SEG34 [12] phi from main::@9 to main::@3 [phi:main::@9->main::@3] @@ -1703,7 +1703,7 @@ main: { b9: //SEG42 [15] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby=_inc_xby inx - //SEG43 [16] if((byte) main::k#1!=(byte) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 + //SEG43 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b3 //SEG44 main::@return @@ -1752,7 +1752,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@7 to main::@1 [phi:main::@7->main::@1] @@ -1768,11 +1768,11 @@ main: { //SEG17 main::@7 //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b1 //SEG20 [7] phi from main::@7 to main::@2 [phi:main::@7->main::@2] - //SEG21 [7] phi (byte) main::j#2 = (byte) 0 [phi:main::@7->main::@2#0] -- xby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@7->main::@2#0] -- xby=coby1 ldx #0 jmp b2 //SEG22 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] @@ -1788,11 +1788,11 @@ main: { //SEG29 main::@8 //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_inc_xby inx - //SEG31 [11] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b2 //SEG32 [12] phi from main::@8 to main::@3 [phi:main::@8->main::@3] - //SEG33 [12] phi (byte) main::k#2 = (byte) 0 [phi:main::@8->main::@3#0] -- xby=coby1 + //SEG33 [12] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@3#0] -- xby=coby1 ldx #0 jmp b3 //SEG34 [12] phi from main::@9 to main::@3 [phi:main::@9->main::@3] @@ -1808,7 +1808,7 @@ main: { //SEG41 main::@9 //SEG42 [15] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby=_inc_xby inx - //SEG43 [16] if((byte) main::k#1!=(byte) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 + //SEG43 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b3 //SEG44 main::@return @@ -1845,7 +1845,7 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@7 to main::@1 [phi:main::@7->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy @@ -1860,11 +1860,11 @@ main: { //SEG17 main::@7 //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b1 //SEG20 [7] phi from main::@7 to main::@2 [phi:main::@7->main::@2] - //SEG21 [7] phi (byte) main::j#2 = (byte) 0 [phi:main::@7->main::@2#0] -- xby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@7->main::@2#0] -- xby=coby1 ldx #0 //SEG22 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] //SEG23 [7] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@2#0] -- register_copy @@ -1879,11 +1879,11 @@ main: { //SEG29 main::@8 //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_inc_xby inx - //SEG31 [11] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b2 //SEG32 [12] phi from main::@8 to main::@3 [phi:main::@8->main::@3] - //SEG33 [12] phi (byte) main::k#2 = (byte) 0 [phi:main::@8->main::@3#0] -- xby=coby1 + //SEG33 [12] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@3#0] -- xby=coby1 ldx #0 //SEG34 [12] phi from main::@9 to main::@3 [phi:main::@9->main::@3] //SEG35 [12] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@9->main::@3#0] -- register_copy @@ -1898,7 +1898,7 @@ main: { //SEG41 main::@9 //SEG42 [15] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby=_inc_xby inx - //SEG43 [16] if((byte) main::k#1!=(byte) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 + //SEG43 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b3 //SEG44 main::@return @@ -1920,7 +1920,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -1967,7 +1967,7 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@7 to main::@1 [phi:main::@7->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#0] -- register_copy @@ -1982,11 +1982,11 @@ main: { //SEG17 main::@7 //SEG18 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby=_inc_xby inx - //SEG19 [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG19 [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b1 //SEG20 [7] phi from main::@7 to main::@2 [phi:main::@7->main::@2] - //SEG21 [7] phi (byte) main::j#2 = (byte) 0 [phi:main::@7->main::@2#0] -- xby=coby1 + //SEG21 [7] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@7->main::@2#0] -- xby=coby1 ldx #0 //SEG22 [7] phi from main::@8 to main::@2 [phi:main::@8->main::@2] //SEG23 [7] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@2#0] -- register_copy @@ -2001,11 +2001,11 @@ main: { //SEG29 main::@8 //SEG30 [10] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby=_inc_xby inx - //SEG31 [11] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 + //SEG31 [11] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b2 //SEG32 [12] phi from main::@8 to main::@3 [phi:main::@8->main::@3] - //SEG33 [12] phi (byte) main::k#2 = (byte) 0 [phi:main::@8->main::@3#0] -- xby=coby1 + //SEG33 [12] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@3#0] -- xby=coby1 ldx #0 //SEG34 [12] phi from main::@9 to main::@3 [phi:main::@9->main::@3] //SEG35 [12] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@9->main::@3#0] -- register_copy @@ -2020,7 +2020,7 @@ main: { //SEG41 main::@9 //SEG42 [15] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby=_inc_xby inx - //SEG43 [16] if((byte) main::k#1!=(byte) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 + //SEG43 [16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] ) -- xby_neq_coby1_then_la1 cpx #$b bne b3 //SEG44 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.sym b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.sym index e8ea1cc48..7eb405cd3 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.cfg b/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.cfg index 3a851e109..2416277fa 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.cfg @@ -5,30 +5,30 @@ to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte) 80) [ ] ( main:0 [ ] ) + [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 80) [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) [4] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@3 main::@3: scope:[main] from main::@1 - [7] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte) 121) [ ] ( main:0 [ ] ) - [8] *((const byte*) main::screen#0+(byte) 82) ← *((const byte*) main::screen#0+(byte) 122) [ ] ( main:0 [ ] ) + [7] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 121) [ ] ( main:0 [ ] ) + [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 122) [ ] ( main:0 [ ] ) to:main::@2 main::@2: scope:[main] from main::@2 main::@3 - [9] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) 0 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) - [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) - [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) + [9] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) + [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) + [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) [12] *((byte*~) main::$9) ← *((byte*~) main::$11) [ main::j#2 ] ( main:0 [ main::j#2 ] ) [13] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) - [14] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) to:main::@4 main::@4: scope:[main] from main::@2 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) - [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) + [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main::@4 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.log b/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.log index fe4f59f83..926de5a3b 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.log @@ -38,39 +38,39 @@ Adding pre/post-modifier *((var) main::$13) ← -- *((var) main::$13) Adding pre/post-modifier *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) PROGRAM proc (void()) main() - (byte*) main::screen ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen + (byte) 80 + (byte*) main::screen ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen + (byte/signed byte/word/signed word) 80 (byte) main::a ← *((byte*~) main::$0) - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (byte*~) main::$1 ← (byte*) main::screen + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i *((byte*) main::screen + (byte) main::i) ← *((byte*~) main::$2) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte) 11 + (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@1 - (byte*~) main::$4 ← (byte*) main::screen + (byte) 81 + (byte*~) main::$4 ← (byte*) main::screen + (byte/signed byte/word/signed word) 81 (byte*) main::sc2 ← (byte*~) main::$4 - (byte*~) main::$5 ← (byte*) main::screen + (byte) 121 + (byte*~) main::$5 ← (byte*) main::screen + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 main::@2: - (byte*~) main::$8 ← (byte*) main::screen + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j - (byte*~) main::$10 ← (byte*) main::screen + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$12 ← (byte) main::j != (byte) 11 + (boolean~) main::$12 ← (byte) main::j != (byte/signed byte/word/signed word) 11 if((boolean~) main::$12) goto main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL ← (word) 53280 *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) main::@return: @@ -110,45 +110,45 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte*) main::screen ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen + (byte) 80 + (byte*) main::screen ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen + (byte/signed byte/word/signed word) 80 (byte) main::a ← *((byte*~) main::$0) - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte*~) main::$1 ← (byte*) main::screen + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i *((byte*) main::screen + (byte) main::i) ← *((byte*~) main::$2) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte) 11 + (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte*~) main::$4 ← (byte*) main::screen + (byte) 81 + (byte*~) main::$4 ← (byte*) main::screen + (byte/signed byte/word/signed word) 81 (byte*) main::sc2 ← (byte*~) main::$4 - (byte*~) main::$5 ← (byte*) main::screen + (byte) 121 + (byte*~) main::$5 ← (byte*) main::screen + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 - (byte*~) main::$8 ← (byte*) main::screen + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j - (byte*~) main::$10 ← (byte*) main::screen + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$12 ← (byte) main::j != (byte) 11 + (boolean~) main::$12 ← (byte) main::j != (byte/signed byte/word/signed word) 11 if((boolean~) main::$12) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL ← (word) 53280 *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) to:main::@return @@ -166,45 +166,45 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen + (byte) 80 + (byte*) main::screen ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen + (byte/signed byte/word/signed word) 80 (byte) main::a ← *((byte*~) main::$0) - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte*~) main::$1 ← (byte*) main::screen + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i *((byte*) main::screen + (byte) main::i) ← *((byte*~) main::$2) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte) 11 + (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte*~) main::$4 ← (byte*) main::screen + (byte) 81 + (byte*~) main::$4 ← (byte*) main::screen + (byte/signed byte/word/signed word) 81 (byte*) main::sc2 ← (byte*~) main::$4 - (byte*~) main::$5 ← (byte*) main::screen + (byte) 121 + (byte*~) main::$5 ← (byte*) main::screen + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j ← (byte) 0 + (byte) main::j ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 - (byte*~) main::$8 ← (byte*) main::screen + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j - (byte*~) main::$10 ← (byte*) main::screen + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$12 ← (byte) main::j != (byte) 11 + (boolean~) main::$12 ← (byte) main::j != (byte/signed byte/word/signed word) 11 if((boolean~) main::$12) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL ← (word) 53280 *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) to:main::@return @@ -223,50 +223,50 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen#0 + (byte) 80 + (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte) main::a#0 ← *((byte*~) main::$0) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@1/(byte*) main::screen#1 ) - (byte*~) main::$1 ← (byte*) main::screen#1 + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i#2 *((byte*) main::screen#1 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 (byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 ) - (byte*~) main::$4 ← (byte*) main::screen#2 + (byte) 81 + (byte*~) main::$4 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 81 (byte*) main::sc2#0 ← (byte*~) main::$4 - (byte*~) main::$5 ← (byte*) main::screen#2 + (byte) 121 + (byte*~) main::$5 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2#0) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen#2 + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen#2 + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) (byte*) main::screen#3 ← phi( main::@2/(byte*) main::screen#3 main::@3/(byte*) main::screen#2 ) - (byte*~) main::$8 ← (byte*) main::screen#3 + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen#3 + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j#2 - (byte*~) main::$10 ← (byte*) main::screen#3 + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen#3 + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$12 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$12 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$12) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL#0 ← (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return @@ -284,50 +284,50 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen#0 + (byte) 80 + (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte) main::a#0 ← *((byte*~) main::$0) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@1/(byte*) main::screen#1 ) - (byte*~) main::$1 ← (byte*) main::screen#1 + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i#2 *((byte*) main::screen#1 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 (byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 ) - (byte*~) main::$4 ← (byte*) main::screen#2 + (byte) 81 + (byte*~) main::$4 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 81 (byte*) main::sc2#0 ← (byte*~) main::$4 - (byte*~) main::$5 ← (byte*) main::screen#2 + (byte) 121 + (byte*~) main::$5 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2#0) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen#2 + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen#2 + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) (byte*) main::screen#3 ← phi( main::@2/(byte*) main::screen#3 main::@3/(byte*) main::screen#2 ) - (byte*~) main::$8 ← (byte*) main::screen#3 + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen#3 + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j#2 - (byte*~) main::$10 ← (byte*) main::screen#3 + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen#3 + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$12 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$12 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$12) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL#0 ← (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return @@ -394,50 +394,50 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen#0 + (byte) 80 + (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte) main::a#0 ← *((byte*~) main::$0) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@1/(byte*) main::screen#1 ) - (byte*~) main::$1 ← (byte*) main::screen#1 + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i#2 *((byte*) main::screen#1 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 (byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 ) - (byte*~) main::$4 ← (byte*) main::screen#2 + (byte) 81 + (byte*~) main::$4 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 81 (byte*) main::sc2#0 ← (byte*~) main::$4 - (byte*~) main::$5 ← (byte*) main::screen#2 + (byte) 121 + (byte*~) main::$5 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2#0) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen#2 + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen#2 + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen#2 + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) (byte*) main::screen#3 ← phi( main::@2/(byte*) main::screen#3 main::@3/(byte*) main::screen#2 ) - (byte*~) main::$8 ← (byte*) main::screen#3 + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen#3 + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j#2 - (byte*~) main::$10 ← (byte*) main::screen#3 + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen#3 + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$12 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$12 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$12) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL#0 ← (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return @@ -457,48 +457,48 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen#0 + (byte) 80 + (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte) main::a#0 ← *((byte*~) main::$0) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@1/(byte*) main::screen#1 ) - (byte*~) main::$1 ← (byte*) main::screen#1 + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i#2 *((byte*) main::screen#1 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte*) main::sc2#0 ← (byte*) main::screen#1 + (byte) 81 - (byte*~) main::$5 ← (byte*) main::screen#1 + (byte) 121 + (byte*) main::sc2#0 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 81 + (byte*~) main::$5 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2#0) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen#1 + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen#1 + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) (byte*) main::screen#3 ← phi( main::@2/(byte*) main::screen#3 main::@3/(byte*) main::screen#1 ) - (byte*~) main::$8 ← (byte*) main::screen#3 + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen#3 + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j#2 - (byte*~) main::$10 ← (byte*) main::screen#3 + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen#3 + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$12 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$12 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$12) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL#0 ← (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return @@ -518,48 +518,48 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen#0 + (byte) 80 + (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte) main::a#0 ← *((byte*~) main::$0) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 ) - (byte*~) main::$1 ← (byte*) main::screen#1 + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i#2 *((byte*) main::screen#1 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte*) main::sc2#0 ← (byte*) main::screen#1 + (byte) 81 - (byte*~) main::$5 ← (byte*) main::screen#1 + (byte) 121 + (byte*) main::sc2#0 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 81 + (byte*~) main::$5 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2#0) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen#1 + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen#1 + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen#1 + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) (byte*) main::screen#3 ← phi( main::@3/(byte*) main::screen#1 ) - (byte*~) main::$8 ← (byte*) main::screen#3 + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen#3 + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j#2 - (byte*~) main::$10 ← (byte*) main::screen#3 + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen#3 + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$12 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$12 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$12) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL#0 ← (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return @@ -578,46 +578,46 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen#0 + (byte) 80 + (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte) main::a#0 ← *((byte*~) main::$0) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte*~) main::$1 ← (byte*) main::screen#0 + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i#2 *((byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$3) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte*) main::sc2#0 ← (byte*) main::screen#0 + (byte) 81 - (byte*~) main::$5 ← (byte*) main::screen#0 + (byte) 121 + (byte*) main::sc2#0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 81 + (byte*~) main::$5 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2#0) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen#0 + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen#0 + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) - (byte*~) main::$8 ← (byte*) main::screen#0 + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen#0 + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j#2 - (byte*~) main::$10 ← (byte*) main::screen#0 + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen#0 + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - (boolean~) main::$12 ← (byte) main::j#1 != (byte) 11 + (boolean~) main::$12 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$12) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL#0 ← (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return @@ -629,51 +629,51 @@ main::@return: scope:[main] from main::@4 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$3 if((byte) main::i#1!=(byte) 11) goto main::@1 -Simple Condition (boolean~) main::$12 if((byte) main::j#1!=(byte) 11) goto main::@2 +Simple Condition (boolean~) main::$3 if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 +Simple Condition (boolean~) main::$12 if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word) 1024 - (byte*~) main::$0 ← (byte*) main::screen#0 + (byte) 80 + (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte) main::a#0 ← *((byte*~) main::$0) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte*~) main::$1 ← (byte*) main::screen#0 + (byte) 40 + (byte*~) main::$1 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i#2 *((byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte*) main::sc2#0 ← (byte*) main::screen#0 + (byte) 81 - (byte*~) main::$5 ← (byte*) main::screen#0 + (byte) 121 + (byte*) main::sc2#0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 81 + (byte*~) main::$5 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2#0) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (byte*) main::screen#0 + (byte) 82 - (byte*~) main::$7 ← (byte*) main::screen#0 + (byte) 122 + (byte*~) main::$6 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) - (byte) main::j#0 ← (byte) 0 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) main::j#0 ) - (byte*~) main::$8 ← (byte*) main::screen#0 + (byte) 160 + (byte*~) main::$8 ← (byte*) main::screen#0 + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j#2 - (byte*~) main::$10 ← (byte*) main::screen#0 + (byte) 200 + (byte*~) main::$10 ← (byte*) main::screen#0 + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - (word~) main::$13 ← (word) 53248 + (byte) 33 + (word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((word~) main::$13) ← -- *((word~) main::$13) - (word~) main::$14 ← (word) 53248 + (byte) 33 - (word~) main::$15 ← (word) 53248 + (byte) 33 + (word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*) main::BGCOL#0 ← (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return @@ -697,34 +697,34 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*~) main::$0 ← (const byte*) main::screen#0 + (byte) 80 + (byte*~) main::$0 ← (const byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte) main::a#0 ← *((byte*~) main::$0) to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte*~) main::$1 ← (const byte*) main::screen#0 + (byte) 40 + (byte*~) main::$1 ← (const byte*) main::screen#0 + (byte/signed byte/word/signed word) 40 (byte*~) main::$2 ← (byte*~) main::$1 + (byte) main::i#2 *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - (byte*) main::sc2#0 ← (const byte*) main::screen#0 + (byte) 81 - (byte*~) main::$5 ← (const byte*) main::screen#0 + (byte) 121 + (byte*) main::sc2#0 ← (const byte*) main::screen#0 + (byte/signed byte/word/signed word) 81 + (byte*~) main::$5 ← (const byte*) main::screen#0 + (byte/signed byte/word/signed word) 121 *((byte*) main::sc2#0) ← *((byte*~) main::$5) - (byte*~) main::$6 ← (const byte*) main::screen#0 + (byte) 82 - (byte*~) main::$7 ← (const byte*) main::screen#0 + (byte) 122 + (byte*~) main::$6 ← (const byte*) main::screen#0 + (byte/signed byte/word/signed word) 82 + (byte*~) main::$7 ← (const byte*) main::screen#0 + (byte/signed byte/word/signed word) 122 *((byte*~) main::$6) ← *((byte*~) main::$7) to:main::@2 main::@2: scope:[main] from main::@2 main::@3 (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(const byte) main::j#0 ) - (byte*~) main::$8 ← (const byte*) main::screen#0 + (byte) 160 + (byte*~) main::$8 ← (const byte*) main::screen#0 + (byte/word/signed word) 160 (byte*~) main::$9 ← (byte*~) main::$8 + (byte) main::j#2 - (byte*~) main::$10 ← (const byte*) main::screen#0 + (byte) 200 + (byte*~) main::$10 ← (const byte*) main::screen#0 + (byte/word/signed word) 200 (byte*~) main::$11 ← (byte*~) main::$10 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) @@ -759,7 +759,7 @@ main::@1: scope:[main] from main main::@1 (byte*~) main::$2 ← (const byte*) main::$1 + (byte) main::i#2 *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 *((const byte*) main::sc2#0) ← *((const byte*) main::$5) @@ -771,7 +771,7 @@ main::@2: scope:[main] from main::@2 main::@3 (byte*~) main::$11 ← (const byte*) main::$10 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) @@ -798,47 +798,47 @@ Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0 -Constant inlined main::$5 = (const byte*) main::screen#0+(byte) 121 -Constant inlined main::$6 = (const byte*) main::screen#0+(byte) 82 -Constant inlined main::$7 = (const byte*) main::screen#0+(byte) 122 -Constant inlined main::$8 = (const byte*) main::screen#0+(byte) 160 -Constant inlined main::$10 = (const byte*) main::screen#0+(byte) 200 -Constant inlined main::j#0 = (byte) 0 -Constant inlined main::$14 = (word) 53248+(byte) 33 -Constant inlined main::$1 = (const byte*) main::screen#0+(byte) 40 -Constant inlined main::$15 = (word) 53248+(byte) 33 -Constant inlined main::i#0 = (byte) 0 -Constant inlined main::$13 = (word) 53248+(byte) 33 -Constant inlined main::$0 = (const byte*) main::screen#0+(byte) 80 +Constant inlined main::$1 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 +Constant inlined main::$0 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 80 +Constant inlined main::$5 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 121 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::$13 = (word) 53248+(byte/signed byte/word/signed word) 33 +Constant inlined main::$6 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 82 +Constant inlined main::$14 = (word) 53248+(byte/signed byte/word/signed word) 33 +Constant inlined main::$15 = (word) 53248+(byte/signed byte/word/signed word) 33 +Constant inlined main::j#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::$7 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 122 +Constant inlined main::$10 = (const byte*) main::screen#0+(byte/word/signed word) 200 +Constant inlined main::$8 = (const byte*) main::screen#0+(byte/word/signed word) 160 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte) main::a#0 ← *((const byte*) main::screen#0+(byte) 80) + (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 80) to:main::@1 main::@1: scope:[main] from main main::@1 - (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) - (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) + (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@3 main::@3: scope:[main] from main::@1 - *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte) 121) - *((const byte*) main::screen#0+(byte) 82) ← *((const byte*) main::screen#0+(byte) 122) + *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 121) + *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 122) to:main::@2 main::@2: scope:[main] from main::@2 main::@3 - (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) 0 ) - (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 - (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 + (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte/signed byte/word/signed word) 0 ) + (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 + (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@2 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) + *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -873,9 +873,9 @@ FINAL SYMBOL TABLE (byte) main::j#1 (byte) main::j#2 (byte*) main::sc2 -(const byte*) main::sc2#0 = (const byte*) main::screen#0+(byte) 81 +(const byte*) main::sc2#0 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81 (byte*) main::screen -(const byte*) main::screen#0 = (word) 1024 +(const byte*) main::screen#0 = (word/signed word) 1024 Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@4 main::@return Added new block during phi lifting main::@5(between main::@1 and main::@1) @@ -889,30 +889,30 @@ CONTROL FLOW GRAPH - PHI LIFTED to:@end @end: scope:[] from @1 main: scope:[main] from @1 - (byte) main::a#0 ← *((const byte*) main::screen#0+(byte) 80) + (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 80) to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#3 ) - (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#3 ) + (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@5 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@5 to:main::@3 main::@3: scope:[main] from main::@1 - *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte) 121) - *((const byte*) main::screen#0+(byte) 82) ← *((const byte*) main::screen#0+(byte) 122) + *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 121) + *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 122) to:main::@2 main::@2: scope:[main] from main::@3 main::@6 - (byte) main::j#2 ← phi( main::@6/(byte~) main::j#3 main::@3/(byte) 0 ) - (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 - (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 + (byte) main::j#2 ← phi( main::@6/(byte~) main::j#3 main::@3/(byte/signed byte/word/signed word) 0 ) + (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 + (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 *((byte*~) main::$9) ← *((byte*~) main::$11) (byte) main::j#1 ← ++ (byte) main::j#2 - if((byte) main::j#1!=(byte) 11) goto main::@6 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@6 to:main::@4 main::@4: scope:[main] from main::@2 *((word) 53280) ← ++ *((word) 53280) - *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) + *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -939,30 +939,30 @@ CONTROL FLOW GRAPH - LIVE RANGES FOUND to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte) 80) [ ] + [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 80) [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#3 ) [ main::i#2 ] - [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#3 ) [ main::i#2 ] + [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] [4] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) [ main::i#2 ] [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1!=(byte) 11) goto main::@5 [ main::i#1 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@5 [ main::i#1 ] to:main::@3 main::@3: scope:[main] from main::@1 - [7] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte) 121) [ ] - [8] *((const byte*) main::screen#0+(byte) 82) ← *((const byte*) main::screen#0+(byte) 122) [ ] + [7] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 121) [ ] + [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 122) [ ] to:main::@2 main::@2: scope:[main] from main::@3 main::@6 - [9] (byte) main::j#2 ← phi( main::@6/(byte~) main::j#3 main::@3/(byte) 0 ) [ main::j#2 ] - [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] - [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] + [9] (byte) main::j#2 ← phi( main::@6/(byte~) main::j#3 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::j#2 ] + [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] + [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] [12] *((byte*~) main::$9) ← *((byte*~) main::$11) [ main::j#2 ] [13] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] - [14] if((byte) main::j#1!=(byte) 11) goto main::@6 [ main::j#1 ] + [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@6 [ main::j#1 ] to:main::@4 main::@4: scope:[main] from main::@2 [15] *((word) 53280) ← ++ *((word) 53280) [ ] - [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] + [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] to:main::@return main::@return: scope:[main] from main::@4 @@ -993,30 +993,30 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte) 80) [ ] + [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 80) [ ] to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] - [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] + [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] [4] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) [ main::i#2 ] [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] to:main::@3 main::@3: scope:[main] from main::@1 - [7] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte) 121) [ ] - [8] *((const byte*) main::screen#0+(byte) 82) ← *((const byte*) main::screen#0+(byte) 122) [ ] + [7] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 121) [ ] + [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 122) [ ] to:main::@2 main::@2: scope:[main] from main::@2 main::@3 - [9] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) 0 ) [ main::j#2 ] - [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] - [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] + [9] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::j#2 ] + [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] + [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] [12] *((byte*~) main::$9) ← *((byte*~) main::$11) [ main::j#2 ] [13] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] - [14] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] + [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] to:main::@4 main::@4: scope:[main] from main::@2 [15] *((word) 53280) ← ++ *((word) 53280) [ ] - [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] + [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] to:main::@return main::@return: scope:[main] from main::@4 @@ -1031,30 +1031,30 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte) 80) [ ] ( main:0 [ ] ) + [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 80) [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) [4] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((byte*~) main::$2) [ main::i#2 ] ( main:0 [ main::i#2 ] ) [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [6] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [6] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@3 main::@3: scope:[main] from main::@1 - [7] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte) 121) [ ] ( main:0 [ ] ) - [8] *((const byte*) main::screen#0+(byte) 82) ← *((const byte*) main::screen#0+(byte) 122) [ ] ( main:0 [ ] ) + [7] *((const byte*) main::sc2#0) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 121) [ ] ( main:0 [ ] ) + [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 82) ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 122) [ ] ( main:0 [ ] ) to:main::@2 main::@2: scope:[main] from main::@2 main::@3 - [9] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte) 0 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) - [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) - [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) + [9] (byte) main::j#2 ← phi( main::@2/(byte) main::j#1 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::j#2 ] ( main:0 [ main::j#2 ] ) + [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) + [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) [12] *((byte*~) main::$9) ← *((byte*~) main::$11) [ main::j#2 ] ( main:0 [ main::j#2 ] ) [13] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) - [14] if((byte) main::j#1!=(byte) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) to:main::@4 main::@4: scope:[main] from main::@2 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) - [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) + [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main::@4 @@ -1064,13 +1064,13 @@ main::@return: scope:[main] from main::@4 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@3 dominated by @1 @begin main::@1 main::@3 main -main::@2 dominated by @1 @begin main::@2 main::@1 main::@3 main -main::@4 dominated by @1 @begin main::@2 main::@1 main::@4 main::@3 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main::@4 main::@3 main +main::@3 dominated by @1 @begin main::@1 main main::@3 +main::@2 dominated by @1 @begin main::@1 main::@2 main main::@3 +main::@4 dominated by @1 @begin main::@1 main::@2 main main::@3 main::@4 +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main main::@3 main::@4 Found back edge: Loop head: main::@1 tails: main::@1 blocks: null Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -1153,12 +1153,12 @@ main: { .label a = 4 .label i = 2 .label j = 3 - //SEG7 [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte) 80) [ ] ( main:0 [ ] ) -- zpby1=_deref_cowo1 + //SEG7 [1] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word) 80) [ ] ( main:0 [ ] ) -- zpby1=_deref_cowo1 lda screen+$50 sta a //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -1168,7 +1168,7 @@ main: { jmp b1 //SEG12 main::@1 b1: - //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_zpby1 + //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_zpby1 lda #main::@2] b2_from_b3: - //SEG21 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@3->main::@2#0] -- zpby1=coby1 + //SEG21 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@2#0] -- zpby1=coby1 lda #0 sta j jmp b2 @@ -1208,7 +1208,7 @@ main: { jmp b2 //SEG24 main::@2 b2: - //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_zpby1 + //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_zpby1 lda #screen+$a0 adc #0 sta _9+1 - //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_zpby1 + //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_zpby1 lda #main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -1341,7 +1328,7 @@ main: { //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby + //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@2] b2_from_b3: - //SEG21 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@3->main::@2#0] -- xby=coby1 + //SEG21 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@2#0] -- xby=coby1 ldx #0 jmp b2 //SEG22 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -1376,7 +1363,7 @@ main: { //SEG23 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG24 main::@2 b2: - //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby + //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #screen+$a0 sta _9+1 - //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby + //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] @@ -1452,7 +1439,7 @@ main: { //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby + //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@2] b2_from_b3: - //SEG21 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@3->main::@2#0] -- xby=coby1 + //SEG21 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@2#0] -- xby=coby1 ldx #0 jmp b2 //SEG22 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -1487,7 +1474,7 @@ main: { //SEG23 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG24 main::@2 b2: - //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby + //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #screen+$a0 sta _9+1 - //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby + //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby + //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@2] b2_from_b3: - //SEG21 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@3->main::@2#0] -- xby=coby1 + //SEG21 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@2#0] -- xby=coby1 ldx #0 jmp b2 //SEG22 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG23 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG24 main::@2 b2: - //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby + //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #screen+$a0 sta _9+1 - //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby + //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby + //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@2] - //SEG21 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@3->main::@2#0] -- xby=coby1 + //SEG21 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@2#0] -- xby=coby1 ldx #0 jmp b2 //SEG22 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG23 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG24 main::@2 b2: - //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby + //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #screen+$a0 sta _9+1 - //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby + //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby + //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@2] - //SEG21 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@3->main::@2#0] -- xby=coby1 + //SEG21 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@2#0] -- xby=coby1 ldx #0 //SEG22 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG23 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG24 main::@2 b2: - //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby + //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #screen+$a0 sta _9+1 - //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby + //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby + //SEG13 [3] (byte*~) main::$2 ← (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 + (byte) main::i#2 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #main::@2] - //SEG21 [9] phi (byte) main::j#2 = (byte) 0 [phi:main::@3->main::@2#0] -- xby=coby1 + //SEG21 [9] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main::@3->main::@2#0] -- xby=coby1 ldx #0 //SEG22 [9] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG23 [9] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG24 main::@2 b2: - //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby + //SEG25 [10] (byte*~) main::$9 ← (const byte*) main::screen#0+(byte/word/signed word) 160 + (byte) main::j#2 [ main::j#2 main::$9 ] ( main:0 [ main::j#2 main::$9 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #screen+$a0 sta _9+1 - //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby + //SEG26 [11] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/signed word) 200 + (byte) main::j#2 [ main::j#2 main::$9 main::$11 ] ( main:0 [ main::j#2 main::$9 main::$11 ] ) -- zpptrby1=cowo1_plus_xby txa clc adc #lvaluevar::@1] b1_from_lvaluevar: - //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- zpby1=coby1 + //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvaluevar->lvaluevar::@1#1] -- zpby1=coby1 lda #2 sta i jmp b1 //SEG23 lvaluevar::@1 b1: - //SEG24 [9] if((byte) lvaluevar::i#2<(byte) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- zpby1_lt_coby1_then_la1 + //SEG24 [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- zpby1_lt_coby1_then_la1 lda i cmp #$a bcc b2 @@ -2314,18 +2314,18 @@ rvaluevar: { .label i = 5 //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- zpby1=coby1 + //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvaluevar->rvaluevar::@1#1] -- zpby1=coby1 lda #2 sta i jmp b1 //SEG38 rvaluevar::@1 b1: - //SEG39 [16] if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- zpby1_lt_coby1_then_la1 + //SEG39 [16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- zpby1_lt_coby1_then_la1 lda i cmp #$a bcc b2 @@ -2363,18 +2363,18 @@ rvalue: { //SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- zpby1=_deref_cowo1 lda SCREEN sta b - //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- zpby1=_deref_cowo1 + //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:0::rvalue:3 [ ] ) -- zpby1=_deref_cowo1 lda SCREEN+1 sta b_1 //SEG52 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG53 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- zpby1=coby1 + //SEG53 [23] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvalue->rvalue::@1#0] -- zpby1=coby1 lda #2 sta i jmp b1 //SEG54 rvalue::@1 b1: - //SEG55 [24] if((byte) rvalue::i#2<(byte) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- zpby1_lt_coby1_then_la1 + //SEG55 [24] if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- zpby1_lt_coby1_then_la1 lda i cmp #$a bcc b2 @@ -2400,21 +2400,21 @@ rvalue: { lvalue: { .const SCREEN = $400 .label i = 9 - //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN - //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #2 sta SCREEN+1 //SEG66 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG67 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- zpby1=coby1 + //SEG67 [30] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvalue->lvalue::@1#0] -- zpby1=coby1 lda #2 sta i jmp b1 //SEG68 lvalue::@1 b1: - //SEG69 [31] if((byte) lvalue::i#2<(byte) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- zpby1_lt_coby1_then_la1 + //SEG69 [31] if((byte) lvalue::i#2<(byte/signed byte/word/signed word) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- zpby1_lt_coby1_then_la1 lda i cmp #$a bcc b2 @@ -2425,7 +2425,7 @@ lvalue: { rts //SEG72 lvalue::@2 b2: - //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_zpby1=coby2 + //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_zpby1=coby2 lda #3 ldx i sta SCREEN,x @@ -2444,15 +2444,15 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ lv Statement [18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] -Statement [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte) 1 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a -Statement [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a -Statement [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) always clobbers reg byte a +Statement [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a +Statement [29] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a +Statement [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ lvalue::i#2 lvalue::i#1 ] Statement [11] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y Statement [18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte) 1 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a -Statement [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a -Statement [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) always clobbers reg byte a +Statement [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a +Statement [29] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a +Statement [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_PTR_BYTE:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] : zp ZP_PTR_BYTE:3 , Potential registers zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] : zp ZP_BYTE:5 , reg byte x , @@ -2472,12 +2472,12 @@ Uplift Scope [lvalue] 36.67: zp ZP_BYTE:9 [ lvalue::i#2 lvalue::i#1 ] Uplift Scope [main] Uplift Scope [] -Uplifting [rvalue] best 1895 combination reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ] reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] -Uplifting [rvaluevar] best 1775 combination reg byte a [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ZP_PTR_BYTE:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] -Uplifting [lvaluevar] best 1685 combination reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] zp ZP_PTR_BYTE:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] -Uplifting [lvalue] best 1565 combination reg byte x [ lvalue::i#2 lvalue::i#1 ] -Uplifting [main] best 1565 combination -Uplifting [] best 1565 combination +Uplifting [rvalue] best 1935 combination reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ] reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] +Uplifting [rvaluevar] best 1815 combination reg byte a [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ZP_PTR_BYTE:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] +Uplifting [lvaluevar] best 1725 combination reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] zp ZP_PTR_BYTE:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] +Uplifting [lvalue] best 1605 combination reg byte x [ lvalue::i#2 lvalue::i#1 ] +Uplifting [main] best 1605 combination +Uplifting [] best 1605 combination Coalescing zero page register [ zp ZP_PTR_BYTE:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] ] with [ zp ZP_PTR_BYTE:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] ] Allocated (was zp ZP_PTR_BYTE:3) zp ZP_PTR_BYTE:2 [ lvaluevar::screen#2 lvaluevar::screen#1 rvaluevar::screen#2 rvaluevar::screen#1 ] Removing instruction jmp b5 @@ -2542,16 +2542,16 @@ lvaluevar: { .label screen = 2 //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 + //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG23 lvaluevar::@1 b1: - //SEG24 [9] if((byte) lvaluevar::i#2<(byte) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 + //SEG24 [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG25 lvaluevar::@return @@ -2582,16 +2582,16 @@ rvaluevar: { .label screen = 2 //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 + //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG38 rvaluevar::@1 b1: - //SEG39 [16] if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 + //SEG39 [16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG40 rvaluevar::@return @@ -2621,15 +2621,15 @@ rvalue: { .const SCREEN = $400 //SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 lda SCREEN - //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 + //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 lda SCREEN+1 //SEG52 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG53 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 + //SEG53 [23] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 ldx #2 //SEG54 rvalue::@1 b1: - //SEG55 [24] if((byte) rvalue::i#2<(byte) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG55 [24] if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG56 rvalue::@return @@ -2650,19 +2650,19 @@ rvalue: { //SEG63 lvalue lvalue: { .const SCREEN = $400 - //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN - //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #2 sta SCREEN+1 //SEG66 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG67 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 + //SEG67 [30] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 ldx #2 //SEG68 lvalue::@1 b1: - //SEG69 [31] if((byte) lvalue::i#2<(byte) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG69 [31] if((byte) lvalue::i#2<(byte/signed byte/word/signed word) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG70 lvalue::@return @@ -2671,7 +2671,7 @@ lvalue: { rts //SEG72 lvalue::@2 b2: - //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #3 sta SCREEN,x //SEG74 [34] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] ( main:0::lvalue:2 [ lvalue::i#1 ] ) -- xby=_inc_xby @@ -2730,16 +2730,16 @@ lvaluevar: { .label screen = 2 //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 + //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG23 lvaluevar::@1 b1: - //SEG24 [9] if((byte) lvaluevar::i#2<(byte) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 + //SEG24 [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG25 lvaluevar::@return @@ -2770,16 +2770,16 @@ rvaluevar: { .label screen = 2 //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 + //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG38 rvaluevar::@1 b1: - //SEG39 [16] if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 + //SEG39 [16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG40 rvaluevar::@return @@ -2809,15 +2809,15 @@ rvalue: { .const SCREEN = $400 //SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 lda SCREEN - //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 + //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 lda SCREEN+1 //SEG52 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG53 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 + //SEG53 [23] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 ldx #2 //SEG54 rvalue::@1 b1: - //SEG55 [24] if((byte) rvalue::i#2<(byte) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG55 [24] if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG56 rvalue::@return @@ -2838,19 +2838,19 @@ rvalue: { //SEG63 lvalue lvalue: { .const SCREEN = $400 - //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN - //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #2 sta SCREEN+1 //SEG66 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG67 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 + //SEG67 [30] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 ldx #2 //SEG68 lvalue::@1 b1: - //SEG69 [31] if((byte) lvalue::i#2<(byte) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG69 [31] if((byte) lvalue::i#2<(byte/signed byte/word/signed word) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG70 lvalue::@return @@ -2859,7 +2859,7 @@ lvalue: { rts //SEG72 lvalue::@2 b2: - //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #3 sta SCREEN,x //SEG74 [34] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] ( main:0::lvalue:2 [ lvalue::i#1 ] ) -- xby=_inc_xby @@ -2925,16 +2925,16 @@ lvaluevar: { .const b = 4 .label screen = 2 //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] - //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 + //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG23 lvaluevar::@1 b1: - //SEG24 [9] if((byte) lvaluevar::i#2<(byte) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 + //SEG24 [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG25 lvaluevar::@return @@ -2962,16 +2962,16 @@ lvaluevar: { rvaluevar: { .label screen = 2 //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] - //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 + //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG38 rvaluevar::@1 b1: - //SEG39 [16] if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 + //SEG39 [16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG40 rvaluevar::@return @@ -2999,14 +2999,14 @@ rvalue: { .const SCREEN = $400 //SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 lda SCREEN - //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 + //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 lda SCREEN+1 //SEG52 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] - //SEG53 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 + //SEG53 [23] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 ldx #2 //SEG54 rvalue::@1 b1: - //SEG55 [24] if((byte) rvalue::i#2<(byte) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG55 [24] if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG56 rvalue::@return @@ -3025,18 +3025,18 @@ rvalue: { //SEG63 lvalue lvalue: { .const SCREEN = $400 - //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN - //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #2 sta SCREEN+1 //SEG66 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] - //SEG67 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 + //SEG67 [30] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 ldx #2 //SEG68 lvalue::@1 b1: - //SEG69 [31] if((byte) lvalue::i#2<(byte) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG69 [31] if((byte) lvalue::i#2<(byte/signed byte/word/signed word) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG70 lvalue::@return @@ -3044,7 +3044,7 @@ lvalue: { rts //SEG72 lvalue::@2 b2: - //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #3 sta SCREEN,x //SEG74 [34] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] ( main:0::lvalue:2 [ lvalue::i#1 ] ) -- xby=_inc_xby @@ -3064,7 +3064,7 @@ FINAL SYMBOL TABLE (label) lvalue::@2 (label) lvalue::@return (byte[1024]) lvalue::SCREEN -(const byte[1024]) lvalue::SCREEN#0 SCREEN = (word) 1024 +(const byte[1024]) lvalue::SCREEN#0 SCREEN = (word/signed word) 1024 (byte) lvalue::i (byte) lvalue::i#1 reg byte x 22.0 (byte) lvalue::i#2 reg byte x 14.666666666666666 @@ -3073,7 +3073,7 @@ FINAL SYMBOL TABLE (label) lvaluevar::@2 (label) lvaluevar::@return (byte) lvaluevar::b -(const byte) lvaluevar::b#0 b = (byte) 4 +(const byte) lvaluevar::b#0 b = (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i (byte) lvaluevar::i#1 reg byte x 22.0 (byte) lvaluevar::i#2 reg byte x 8.25 @@ -3090,7 +3090,7 @@ FINAL SYMBOL TABLE (label) rvalue::@2 (label) rvalue::@return (byte[1024]) rvalue::SCREEN -(const byte[1024]) rvalue::SCREEN#0 SCREEN = (word) 1024 +(const byte[1024]) rvalue::SCREEN#0 SCREEN = (word/signed word) 1024 (byte) rvalue::b (byte) rvalue::b#0 reg byte a 20.0 (byte) rvalue::b#1 reg byte a 20.0 @@ -3157,16 +3157,16 @@ lvaluevar: { .const b = 4 .label screen = 2 //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] - //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 + //SEG22 [8] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG23 lvaluevar::@1 b1: - //SEG24 [9] if((byte) lvaluevar::i#2<(byte) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 + //SEG24 [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG25 lvaluevar::@return @@ -3194,16 +3194,16 @@ lvaluevar: { rvaluevar: { .label screen = 2 //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] - //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 + //SEG37 [15] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG38 rvaluevar::@1 b1: - //SEG39 [16] if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 + //SEG39 [16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG40 rvaluevar::@return @@ -3231,14 +3231,14 @@ rvalue: { .const SCREEN = $400 //SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 lda SCREEN - //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 + //SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_deref_cowo1 lda SCREEN+1 //SEG52 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] - //SEG53 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 + //SEG53 [23] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 ldx #2 //SEG54 rvalue::@1 b1: - //SEG55 [24] if((byte) rvalue::i#2<(byte) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG55 [24] if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 [ rvalue::i#2 ] ( main:0::rvalue:3 [ rvalue::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG56 rvalue::@return @@ -3257,18 +3257,18 @@ rvalue: { //SEG63 lvalue lvalue: { .const SCREEN = $400 - //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG64 [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN - //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 + //SEG65 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 [ ] ( main:0::lvalue:2 [ ] ) -- _deref_cowo1=coby2 lda #2 sta SCREEN+1 //SEG66 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] - //SEG67 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 + //SEG67 [30] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 tax //SEG68 lvalue::@1 b1: - //SEG69 [31] if((byte) lvalue::i#2<(byte) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG69 [31] if((byte) lvalue::i#2<(byte/signed byte/word/signed word) 10) goto lvalue::@2 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG70 lvalue::@return @@ -3276,7 +3276,7 @@ lvalue: { rts //SEG72 lvalue::@2 b2: - //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_xby=coby2 + //SEG73 [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) -- cowo1_derefidx_xby=coby2 lda #3 sta SCREEN,x //SEG74 [34] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] ( main:0::lvalue:2 [ lvalue::i#1 ] ) -- xby=_inc_xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.sym b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.sym index 1ab99fcf5..58f0db683 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.sym @@ -6,7 +6,7 @@ (label) lvalue::@2 (label) lvalue::@return (byte[1024]) lvalue::SCREEN -(const byte[1024]) lvalue::SCREEN#0 SCREEN = (word) 1024 +(const byte[1024]) lvalue::SCREEN#0 SCREEN = (word/signed word) 1024 (byte) lvalue::i (byte) lvalue::i#1 reg byte x 22.0 (byte) lvalue::i#2 reg byte x 14.666666666666666 @@ -15,7 +15,7 @@ (label) lvaluevar::@2 (label) lvaluevar::@return (byte) lvaluevar::b -(const byte) lvaluevar::b#0 b = (byte) 4 +(const byte) lvaluevar::b#0 b = (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i (byte) lvaluevar::i#1 reg byte x 22.0 (byte) lvaluevar::i#2 reg byte x 8.25 @@ -32,7 +32,7 @@ (label) rvalue::@2 (label) rvalue::@return (byte[1024]) rvalue::SCREEN -(const byte[1024]) rvalue::SCREEN#0 SCREEN = (word) 1024 +(const byte[1024]) rvalue::SCREEN#0 SCREEN = (word/signed word) 1024 (byte) rvalue::b (byte) rvalue::b#0 reg byte a 20.0 (byte) rvalue::b#1 reg byte a 20.0 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.cfg b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.cfg index cbd1a5743..11d99994e 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.cfg @@ -8,8 +8,8 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@return main::@return: scope:[main] from main::@1 [4] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log index 1eae6a4df..652d17580 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log @@ -18,10 +18,10 @@ void main() { Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i PROGRAM proc (void()) main() - (byte[1024]) main::SCREEN ← (word) 1024 - (byte) main::i ← (byte) 2 + (byte[1024]) main::SCREEN ← (word/signed word) 1024 + (byte) main::i ← (byte/signed byte/word/signed word) 2 main::@1: - (boolean~) main::$0 ← (byte) main::i < (byte) 10 + (boolean~) main::$0 ← (byte) main::i < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 goto main::@3 main::@2: @@ -51,11 +51,11 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[1024]) main::SCREEN ← (word) 1024 - (byte) main::i ← (byte) 2 + (byte[1024]) main::SCREEN ← (word/signed word) 1024 + (byte) main::i ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$0 ← (byte) main::i < (byte) 10 + (boolean~) main::$0 ← (byte) main::i < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 to:main::@4 main::@2: scope:[main] from main::@1 main::@5 @@ -87,11 +87,11 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[1024]) main::SCREEN ← (word) 1024 - (byte) main::i ← (byte) 2 + (byte[1024]) main::SCREEN ← (word/signed word) 1024 + (byte) main::i ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$0 ← (byte) main::i < (byte) 10 + (boolean~) main::$0 ← (byte) main::i < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -113,11 +113,11 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN ← (word) 1024 - (byte) main::i ← (byte) 2 + (byte[1024]) main::SCREEN ← (word/signed word) 1024 + (byte) main::i ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$0 ← (byte) main::i < (byte) 10 + (boolean~) main::$0 ← (byte) main::i < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -141,13 +141,13 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word) 1024 - (byte) main::i#0 ← (byte) 2 + (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[1024]) main::SCREEN#2 ← phi( main/(byte[1024]) main::SCREEN#0 main::@2/(byte[1024]) main::SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 < (byte) 10 + (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -171,13 +171,13 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word) 1024 - (byte) main::i#0 ← (byte) 2 + (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[1024]) main::SCREEN#2 ← phi( main/(byte[1024]) main::SCREEN#0 main::@2/(byte[1024]) main::SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 < (byte) 10 + (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -226,13 +226,13 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word) 1024 - (byte) main::i#0 ← (byte) 2 + (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[1024]) main::SCREEN#2 ← phi( main/(byte[1024]) main::SCREEN#0 main::@2/(byte[1024]) main::SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 < (byte) 10 + (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -258,13 +258,13 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word) 1024 - (byte) main::i#0 ← (byte) 2 + (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[1024]) main::SCREEN#1 ← phi( main/(byte[1024]) main::SCREEN#0 main::@2/(byte[1024]) main::SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 < (byte) 10 + (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -285,13 +285,13 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word) 1024 - (byte) main::i#0 ← (byte) 2 + (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[1024]) main::SCREEN#1 ← phi( main/(byte[1024]) main::SCREEN#0 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 < (byte) 10 + (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -312,12 +312,12 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word) 1024 - (byte) main::i#0 ← (byte) 2 + (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (boolean~) main::$0 ← (byte) main::i#2 < (byte) 10 + (boolean~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word) 10 if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -332,18 +332,18 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$0 if((byte) main::i#2<(byte) 10) goto main::@2 +Simple Condition (boolean~) main::$0 if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word) 1024 - (byte) main::i#0 ← (byte) 2 + (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 2 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - if((byte) main::i#2<(byte) 10) goto main::@2 + if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte) main::b#0 ← (byte[1024]) main::SCREEN#0 *idx (byte) main::i#2 @@ -367,7 +367,7 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@2/(byte) main::i#1 ) - if((byte) main::i#2<(byte) 10) goto main::@2 + if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte) main::b#0 ← (const byte[1024]) main::SCREEN#0 *idx (byte) main::i#2 @@ -385,7 +385,7 @@ Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Constant inlined main::i#0 = (byte) 2 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 2 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -393,8 +393,8 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 ) - if((byte) main::i#2<(byte) 10) goto main::@2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::i#1 ) + if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte) main::b#0 ← (const byte[1024]) main::SCREEN#0 *idx (byte) main::i#2 @@ -417,7 +417,7 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte[1024]) main::SCREEN -(const byte[1024]) main::SCREEN#0 = (word) 1024 +(const byte[1024]) main::SCREEN#0 = (word/signed word) 1024 (byte) main::b (byte) main::b#0 (byte) main::i @@ -436,8 +436,8 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte~) main::i#4 ) - if((byte) main::i#2<(byte) 10) goto main::@2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 2 main::@2/(byte~) main::i#4 ) + if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 to:main::@return main::@return: scope:[main] from main::@1 return @@ -465,8 +465,8 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte~) main::i#4 ) [ main::i#2 ] - [3] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 2 main::@2/(byte~) main::i#4 ) [ main::i#2 ] + [3] if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 [ main::i#2 ] to:main::@return main::@return: scope:[main] from main::@1 [4] return [ ] @@ -495,8 +495,8 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 ) [ main::i#2 ] - [3] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::i#1 ) [ main::i#2 ] + [3] if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 [ main::i#2 ] to:main::@return main::@return: scope:[main] from main::@1 [4] return [ ] @@ -517,8 +517,8 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) to:main::@return main::@return: scope:[main] from main::@1 [4] return [ ] ( main:0 [ ] ) @@ -531,11 +531,11 @@ main::@2: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@return dominated by @1 main::@return @begin main::@1 main -main::@2 dominated by @1 @begin main::@2 main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main +main::@2 dominated by @1 @begin main::@1 main::@2 main Found back edge: Loop head: main::@1 tails: main::@2 blocks: null Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 @@ -591,13 +591,13 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 2 [phi:main->main::@1#0] -- zpby1=coby1 lda #2 sta i jmp b1 //SEG10 main::@1 b1: - //SEG11 [3] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- zpby1_lt_coby1_then_la1 + //SEG11 [3] if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- zpby1_lt_coby1_then_la1 lda i cmp #$a bcc b2 @@ -656,11 +656,11 @@ main: { .const SCREEN = $400 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 2 [phi:main->main::@1#0] -- xby=coby1 ldx #2 //SEG10 main::@1 b1: - //SEG11 [3] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG11 [3] if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG12 main::@return @@ -701,11 +701,11 @@ main: { .const SCREEN = $400 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 2 [phi:main->main::@1#0] -- xby=coby1 ldx #2 //SEG10 main::@1 b1: - //SEG11 [3] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG11 [3] if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG12 main::@return @@ -746,11 +746,11 @@ ASSEMBLER main: { .const SCREEN = $400 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 2 [phi:main->main::@1#0] -- xby=coby1 ldx #2 //SEG10 main::@1 b1: - //SEG11 [3] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG11 [3] if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG12 main::@return @@ -776,7 +776,7 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte[1024]) main::SCREEN -(const byte[1024]) main::SCREEN#0 SCREEN = (word) 1024 +(const byte[1024]) main::SCREEN#0 SCREEN = (word/signed word) 1024 (byte) main::b (byte) main::b#0 reg byte a 110.0 (byte) main::i @@ -802,11 +802,11 @@ FINAL CODE main: { .const SCREEN = $400 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 2 [phi:main->main::@1#0] -- xby=coby1 ldx #2 //SEG10 main::@1 b1: - //SEG11 [3] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_lt_coby1_then_la1 + //SEG11 [3] if((byte) main::i#2<(byte/signed byte/word/signed word) 10) goto main::@2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- xby_lt_coby1_then_la1 cpx #$a bcc b2 //SEG12 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.sym b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.sym index 81557f46a..4f4dec017 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.sym @@ -6,7 +6,7 @@ (label) main::@2 (label) main::@return (byte[1024]) main::SCREEN -(const byte[1024]) main::SCREEN#0 SCREEN = (word) 1024 +(const byte[1024]) main::SCREEN#0 SCREEN = (word/signed word) 1024 (byte) main::b (byte) main::b#0 reg byte a 110.0 (byte) main::i diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.cfg b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.cfg index d622b6432..8dc396dd5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.cfg @@ -8,7 +8,7 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] ) [2] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] ) [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.log b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.log index 0717d6ac7..5431cf7e4 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.log @@ -19,12 +19,12 @@ void main() { Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i Adding pre/post-modifier (byte*) main::nxt ← ++ (byte*) main::nxt PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) SCROLL ← (word) 53270 (byte[]) TEXT ← (string) "01234567@" proc (void()) main() (byte*) main::nxt ← (byte[]) TEXT - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: (byte) main::c ← *((byte*) main::nxt) (boolean~) main::$0 ← (byte) main::c == (byte) '@' @@ -58,13 +58,13 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) SCROLL ← (word) 53270 (byte[]) TEXT ← (string) "01234567@" to:@1 main: scope:[main] from (byte*) main::nxt ← (byte[]) TEXT - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::c ← *((byte*) main::nxt) @@ -95,13 +95,13 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) SCROLL ← (word) 53270 (byte[]) TEXT ← (string) "01234567@" to:@1 main: scope:[main] from (byte*) main::nxt ← (byte[]) TEXT - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::c ← *((byte*) main::nxt) @@ -131,13 +131,13 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) SCROLL ← (word) 53270 (byte[]) TEXT ← (string) "01234567@" to:@1 main: scope:[main] from @1 (byte*) main::nxt ← (byte[]) TEXT - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::c ← *((byte*) main::nxt) @@ -171,7 +171,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCROLL#0 ← (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 @@ -179,7 +179,7 @@ main: scope:[main] from @1 (byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#5 ) (byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#3 ) (byte*) main::nxt#0 ← (byte[]) TEXT#1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[]) TEXT#4 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#5 ) @@ -223,7 +223,7 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCROLL#0 ← (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 @@ -231,7 +231,7 @@ main: scope:[main] from @1 (byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#5 ) (byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#3 ) (byte*) main::nxt#0 ← (byte[]) TEXT#1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[]) TEXT#4 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#5 ) @@ -322,7 +322,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCROLL#0 ← (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 @@ -330,7 +330,7 @@ main: scope:[main] from @1 (byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#5 ) (byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#3 ) (byte*) main::nxt#0 ← (byte[]) TEXT#1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[]) TEXT#4 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#5 ) @@ -374,7 +374,7 @@ Inversing boolean not (boolean~) main::$1 ← (byte) main::c#0 != (byte) '@' fro Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCROLL#0 ← (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 @@ -382,7 +382,7 @@ main: scope:[main] from @1 (byte*) SCREEN#4 ← phi( @1/(byte*) SCREEN#5 ) (byte[]) TEXT#1 ← phi( @1/(byte[]) TEXT#3 ) (byte*) main::nxt#0 ← (byte[]) TEXT#1 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[]) TEXT#4 ← phi( main/(byte[]) TEXT#1 main::@2/(byte[]) TEXT#5 ) @@ -431,13 +431,13 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCROLL#0 ← (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 (byte*) main::nxt#0 ← (byte[]) TEXT#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[]) TEXT#2 ← phi( main/(byte[]) TEXT#0 main::@2/(byte[]) TEXT#5 ) @@ -479,13 +479,13 @@ Alias (byte[]) TEXT#2 = (byte[]) TEXT#5 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCROLL#0 ← (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 (byte*) main::nxt#0 ← (byte[]) TEXT#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[]) TEXT#2 ← phi( main/(byte[]) TEXT#0 main::@2/(byte[]) TEXT#2 ) @@ -523,13 +523,13 @@ Self Phi Eliminated (byte[]) TEXT#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCROLL#0 ← (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 (byte*) main::nxt#0 ← (byte[]) TEXT#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte[]) TEXT#2 ← phi( main/(byte[]) TEXT#0 ) @@ -565,13 +565,13 @@ Redundant Phi (byte[]) TEXT#2 (byte[]) TEXT#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCROLL#0 ← (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 (byte*) main::nxt#0 ← (byte[]) TEXT#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -604,13 +604,13 @@ Simple Condition (boolean~) main::$1 if((byte) main::c#0!=(byte) '@') goto main: Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCROLL#0 ← (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 (byte*) main::nxt#0 ← (byte[]) TEXT#0 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) @@ -716,9 +716,9 @@ Inlining constant with var siblings (const byte*) main::nxt#0 Inlining constant with var siblings (const byte*) main::nxt#2 Inlining constant with var siblings (const byte*) main::nxt#2 Inlining constant with var siblings (const byte*) main::nxt#2 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Constant inlined main::nxt#0 = (const byte[]) TEXT#0 Constant inlined main::nxt#2 = (const byte[]) TEXT#0 -Constant inlined main::i#0 = (byte) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -726,7 +726,7 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 ) (byte) main::c#0 ← *((byte*) main::nxt#3) if((byte) main::c#0!=(byte) '@') goto main::@2 @@ -755,7 +755,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte*) SCROLL (const byte*) SCROLL#0 = (word) 53270 (byte[]) TEXT @@ -791,7 +791,7 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@5/(byte*~) main::nxt#5 ) (byte) main::c#0 ← *((byte*) main::nxt#3) if((byte) main::c#0!=(byte) '@') goto main::@6 @@ -841,7 +841,7 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) [ main::nxt#3 main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) [ main::nxt#3 main::i#2 ] [2] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@5/(byte*~) main::nxt#5 ) [ main::nxt#3 main::i#2 ] [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] [4] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::i#2 main::c#0 ] @@ -897,7 +897,7 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] [2] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ] [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#2 main::c#0 ] @@ -928,7 +928,7 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] ) [2] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] ) [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) @@ -951,12 +951,12 @@ main::@return: scope:[main] from main::@2 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@3 dominated by @1 @begin main::@1 main::@3 main -main::@2 dominated by @1 @begin main::@2 main::@1 main -main::@return dominated by @1 main::@return @begin main::@2 main::@1 main +main::@3 dominated by @1 @begin main::@1 main main::@3 +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main Found back edge: Loop head: main::@1 tails: main::@2 blocks: null Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 main::@3 @@ -1026,7 +1026,7 @@ main: { .label nxt = 4 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i //SEG10 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 @@ -1105,8 +1105,8 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 55: zp ZP_BYTE:3 [ main::c#2 main::c#0 main::c#1 ] 25.67: zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] 12.65: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 870 combination reg byte y [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] reg byte x [ main::i#2 main::i#1 ] -Uplifting [] best 870 combination +Uplifting [main] best 900 combination reg byte y [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [] best 900 combination Allocated (was zp ZP_PTR_BYTE:4) zp ZP_PTR_BYTE:2 [ main::nxt#4 main::nxt#3 main::nxt#1 ] Removing instruction jmp b1 Removing instruction jmp bend @@ -1139,7 +1139,7 @@ main: { .label nxt = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 //SEG10 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG12 [3] phi (byte) main::scroll#7 = (byte) 7 [phi:main->main::@2#1] -- zpby1=coby1 + //SEG12 [3] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#1] -- zpby1=coby1 lda #7 sta scroll jmp b2 @@ -3433,14 +3433,14 @@ main: { jmp b2 //SEG17 main::@2 b2: - //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 jmp b3 //SEG19 main::@3 b3: - //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -3451,13 +3451,13 @@ main: { inc BGCOL //SEG23 [7] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- zpby1=_dec_zpby1 dec scroll - //SEG24 [8] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG24 [8] if((byte) main::scroll#1!=(byte/word/signed word) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- zpby1_neq_coby1_then_la1 lda scroll cmp #$ff bne b4_from_b8 //SEG25 [9] phi from main::@8 to main::@5 [phi:main::@8->main::@5] b5_from_b8: - //SEG26 [9] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- zpby1=coby1 + //SEG26 [9] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@5#0] -- zpby1=coby1 lda #0 sta i jmp b5 @@ -3467,7 +3467,7 @@ main: { jmp b5 //SEG29 main::@5 b5: - //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line+1,x sta _7 @@ -3477,7 +3477,7 @@ main: { sta line,x //SEG32 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG33 [13] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG33 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$27 bne b5_from_b5 @@ -3514,7 +3514,7 @@ main: { jmp b6 //SEG45 main::@6 b6: - //SEG46 [18] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=zpby1 + //SEG46 [18] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=zpby1 lda c sta line+$27 //SEG47 [19] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] ) -- zpptrby1=_inc_zpptrby1 @@ -3525,7 +3525,7 @@ main: { //SEG48 [20] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: //SEG49 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG50 [20] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- zpby1=coby1 + //SEG50 [20] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- zpby1=coby1 lda #7 sta scroll jmp b4 @@ -3576,7 +3576,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -3593,17 +3593,17 @@ fillscreen: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a +Statement [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::scroll#7 main::scroll#10 main::scroll#1 ] -Statement [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a +Statement [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a Statement [14] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:0 [ main::nxt#9 main::c#0 ] ) always clobbers reg byte a reg byte y Statement [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a -Statement [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a -Statement [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a +Statement [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a +Statement [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a Statement [14] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:0 [ main::nxt#9 main::c#0 ] ) always clobbers reg byte a reg byte y Statement [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::scroll#7 main::scroll#10 main::scroll#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::i#2 main::i#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ main::c#2 main::c#0 main::c#1 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , @@ -3616,9 +3616,9 @@ Uplift Scope [main] 286.17: zp ZP_BYTE:3 [ main::i#2 main::i#1 ] 202: zp ZP_BYTE Uplift Scope [fillscreen] 33: zp ZP_PTR_BYTE:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplift Scope [] -Uplifting [main] best 8647 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$7 ] reg byte x [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] reg byte x [ main::scroll#7 main::scroll#10 main::scroll#1 ] -Uplifting [fillscreen] best 8647 combination zp ZP_PTR_BYTE:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Uplifting [] best 8647 combination +Uplifting [main] best 8797 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$7 ] reg byte x [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] reg byte x [ main::scroll#7 main::scroll#10 main::scroll#1 ] +Uplifting [fillscreen] best 8797 combination zp ZP_PTR_BYTE:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] +Uplifting [] best 8797 combination Coalescing zero page register [ zp ZP_PTR_BYTE:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] ] with [ zp ZP_PTR_BYTE:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] Allocated (was zp ZP_PTR_BYTE:5) zp ZP_PTR_BYTE:2 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 fillscreen::cursor#2 fillscreen::cursor#1 ] Removing instruction jmp b2 @@ -3671,7 +3671,7 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG12 [3] phi (byte) main::scroll#7 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 + //SEG12 [3] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 //SEG13 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -3683,13 +3683,13 @@ main: { //SEG16 [3] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG17 main::@2 b2: - //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 //SEG19 main::@3 b3: - //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -3699,12 +3699,12 @@ main: { inc BGCOL //SEG23 [7] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby=_dec_xby dex - //SEG24 [8] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 + //SEG24 [8] if((byte) main::scroll#1!=(byte/word/signed word) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b4_from_b8 //SEG25 [9] phi from main::@8 to main::@5 [phi:main::@8->main::@5] b5_from_b8: - //SEG26 [9] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 + //SEG26 [9] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 jmp b5 //SEG27 [9] phi from main::@5 to main::@5 [phi:main::@5->main::@5] @@ -3712,13 +3712,13 @@ main: { //SEG28 [9] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG29 main::@5 b5: - //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby + //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby lda line+1,x //SEG31 [11] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] ) -- cowo1_derefidx_xby=aby sta line,x //SEG32 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby=_inc_xby inx - //SEG33 [13] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG33 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b5_from_b5 //SEG34 main::@10 @@ -3749,7 +3749,7 @@ main: { //SEG44 [17] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG45 main::@6 b6: - //SEG46 [18] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby + //SEG46 [18] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby stx line+$27 //SEG47 [19] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt @@ -3759,7 +3759,7 @@ main: { //SEG48 [20] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: //SEG49 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG50 [20] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 + //SEG50 [20] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 jmp b4 //SEG51 [20] phi from main::@8 to main::@4 [phi:main::@8->main::@4] @@ -3805,7 +3805,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -3868,7 +3868,7 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG12 [3] phi (byte) main::scroll#7 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 + //SEG12 [3] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 //SEG13 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -3879,13 +3879,13 @@ main: { //SEG16 [3] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG17 main::@2 b2: - //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 //SEG19 main::@3 b3: - //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -3895,25 +3895,25 @@ main: { inc BGCOL //SEG23 [7] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby=_dec_xby dex - //SEG24 [8] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 + //SEG24 [8] if((byte) main::scroll#1!=(byte/word/signed word) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b4 //SEG25 [9] phi from main::@8 to main::@5 [phi:main::@8->main::@5] b5_from_b8: - //SEG26 [9] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 + //SEG26 [9] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 jmp b5 //SEG27 [9] phi from main::@5 to main::@5 [phi:main::@5->main::@5] //SEG28 [9] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG29 main::@5 b5: - //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby + //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby lda line+1,x //SEG31 [11] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] ) -- cowo1_derefidx_xby=aby sta line,x //SEG32 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby=_inc_xby inx - //SEG33 [13] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG33 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b5 //SEG34 main::@10 @@ -3943,7 +3943,7 @@ main: { //SEG44 [17] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG45 main::@6 b6: - //SEG46 [18] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby + //SEG46 [18] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby stx line+$27 //SEG47 [19] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt @@ -3953,7 +3953,7 @@ main: { //SEG48 [20] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: //SEG49 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG50 [20] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 + //SEG50 [20] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 jmp b4 //SEG51 [20] phi from main::@8 to main::@4 [phi:main::@8->main::@4] @@ -3997,7 +3997,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -4056,7 +4056,7 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG12 [3] phi (byte) main::scroll#7 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 + //SEG12 [3] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 //SEG13 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -4067,13 +4067,13 @@ main: { //SEG16 [3] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG17 main::@2 b2: - //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 //SEG19 main::@3 b3: - //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -4082,24 +4082,24 @@ main: { inc BGCOL //SEG23 [7] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby=_dec_xby dex - //SEG24 [8] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 + //SEG24 [8] if((byte) main::scroll#1!=(byte/word/signed word) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b4 //SEG25 [9] phi from main::@8 to main::@5 [phi:main::@8->main::@5] - //SEG26 [9] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 + //SEG26 [9] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 jmp b5 //SEG27 [9] phi from main::@5 to main::@5 [phi:main::@5->main::@5] //SEG28 [9] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG29 main::@5 b5: - //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby + //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby lda line+1,x //SEG31 [11] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] ) -- cowo1_derefidx_xby=aby sta line,x //SEG32 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby=_inc_xby inx - //SEG33 [13] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG33 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b5 //SEG34 main::@10 @@ -4126,7 +4126,7 @@ main: { //SEG44 [17] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG45 main::@6 b6: - //SEG46 [18] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby + //SEG46 [18] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby stx line+$27 //SEG47 [19] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt @@ -4135,7 +4135,7 @@ main: { !: //SEG48 [20] phi from main::@6 to main::@4 [phi:main::@6->main::@4] //SEG49 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG50 [20] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 + //SEG50 [20] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 jmp b4 //SEG51 [20] phi from main::@8 to main::@4 [phi:main::@8->main::@4] @@ -4177,7 +4177,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -4227,7 +4227,7 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG12 [3] phi (byte) main::scroll#7 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 + //SEG12 [3] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 //SEG13 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -4237,13 +4237,13 @@ main: { //SEG16 [3] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG17 main::@2 b2: - //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 //SEG19 main::@3 b3: - //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -4252,23 +4252,23 @@ main: { inc BGCOL //SEG23 [7] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby=_dec_xby dex - //SEG24 [8] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 + //SEG24 [8] if((byte) main::scroll#1!=(byte/word/signed word) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b4 //SEG25 [9] phi from main::@8 to main::@5 [phi:main::@8->main::@5] - //SEG26 [9] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 + //SEG26 [9] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 //SEG27 [9] phi from main::@5 to main::@5 [phi:main::@5->main::@5] //SEG28 [9] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG29 main::@5 b5: - //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby + //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby lda line+1,x //SEG31 [11] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] ) -- cowo1_derefidx_xby=aby sta line,x //SEG32 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby=_inc_xby inx - //SEG33 [13] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG33 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b5 //SEG34 main::@10 @@ -4294,7 +4294,7 @@ main: { //SEG44 [17] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG45 main::@6 b6: - //SEG46 [18] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby + //SEG46 [18] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby stx line+$27 //SEG47 [19] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt @@ -4303,7 +4303,7 @@ main: { !: //SEG48 [20] phi from main::@6 to main::@4 [phi:main::@6->main::@4] //SEG49 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG50 [20] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 + //SEG50 [20] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 //SEG51 [20] phi from main::@8 to main::@4 [phi:main::@8->main::@4] //SEG52 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy @@ -4343,7 +4343,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -4390,7 +4390,7 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG12 [3] phi (byte) main::scroll#7 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 + //SEG12 [3] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 //SEG13 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -4399,13 +4399,13 @@ main: { //SEG16 [3] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG17 main::@2 b2: - //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2 //SEG19 main::@3 b3: - //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -4414,23 +4414,23 @@ main: { inc BGCOL //SEG23 [7] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby=_dec_xby dex - //SEG24 [8] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 + //SEG24 [8] if((byte) main::scroll#1!=(byte/word/signed word) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b4 //SEG25 [9] phi from main::@8 to main::@5 [phi:main::@8->main::@5] - //SEG26 [9] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 + //SEG26 [9] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 //SEG27 [9] phi from main::@5 to main::@5 [phi:main::@5->main::@5] //SEG28 [9] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG29 main::@5 b5: - //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby + //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby lda line+1,x //SEG31 [11] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] ) -- cowo1_derefidx_xby=aby sta line,x //SEG32 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby=_inc_xby inx - //SEG33 [13] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG33 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b5 //SEG34 main::@10 @@ -4456,7 +4456,7 @@ main: { //SEG44 [17] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG45 main::@6 b6: - //SEG46 [18] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby + //SEG46 [18] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby stx line+$27 //SEG47 [19] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt @@ -4465,7 +4465,7 @@ main: { !: //SEG48 [20] phi from main::@6 to main::@4 [phi:main::@6->main::@4] //SEG49 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG50 [20] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 + //SEG50 [20] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 //SEG51 [20] phi from main::@8 to main::@4 [phi:main::@8->main::@4] //SEG52 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy @@ -4505,7 +4505,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -4551,7 +4551,7 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG12 [3] phi (byte) main::scroll#7 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 + //SEG12 [3] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 //SEG13 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG14 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] @@ -4559,13 +4559,13 @@ main: { //SEG16 [3] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG17 main::@2 b2: - //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2 //SEG19 main::@3 b3: - //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -4574,23 +4574,23 @@ main: { inc BGCOL //SEG23 [7] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby=_dec_xby dex - //SEG24 [8] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 + //SEG24 [8] if((byte) main::scroll#1!=(byte/word/signed word) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b4 //SEG25 [9] phi from main::@8 to main::@5 [phi:main::@8->main::@5] - //SEG26 [9] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 + //SEG26 [9] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 //SEG27 [9] phi from main::@5 to main::@5 [phi:main::@5->main::@5] //SEG28 [9] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG29 main::@5 b5: - //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby + //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby lda line+1,x //SEG31 [11] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] ) -- cowo1_derefidx_xby=aby sta line,x //SEG32 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby=_inc_xby inx - //SEG33 [13] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG33 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b5 //SEG34 main::@10 @@ -4616,7 +4616,7 @@ main: { //SEG44 [17] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG45 main::@6 b6: - //SEG46 [18] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby + //SEG46 [18] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby stx line+$27 //SEG47 [19] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt @@ -4625,7 +4625,7 @@ main: { !: //SEG48 [20] phi from main::@6 to main::@4 [phi:main::@6->main::@4] //SEG49 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG50 [20] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 + //SEG50 [20] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 //SEG51 [20] phi from main::@8 to main::@4 [phi:main::@8->main::@4] //SEG52 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy @@ -4665,7 +4665,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -4688,7 +4688,7 @@ FINAL SYMBOL TABLE (byte*) RASTER (const byte*) RASTER#0 RASTER = (word) 53266 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = (word) 53270 (byte*) TEXT @@ -4700,7 +4700,7 @@ FINAL SYMBOL TABLE (byte*) fillscreen::cursor#1 cursor zp ZP_PTR_BYTE:2 16.5 (byte*) fillscreen::cursor#2 cursor zp ZP_PTR_BYTE:2 16.5 (byte) fillscreen::fill -(const byte) fillscreen::fill#0 fill = (byte) 32 +(const byte) fillscreen::fill#0 fill = (byte/signed byte/word/signed word) 32 (byte*) fillscreen::screen (void()) main() (byte~) main::$7 reg byte a 202.0 @@ -4721,7 +4721,7 @@ FINAL SYMBOL TABLE (byte) main::i#1 reg byte x 151.5 (byte) main::i#2 reg byte x 134.66666666666666 (byte[]) main::line -(const byte[]) main::line#0 line = (const byte*) SCREEN#0+(byte) 40 +(const byte[]) main::line#0 line = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 (byte*) main::nxt (byte*) main::nxt#1 nxt zp ZP_PTR_BYTE:2 22.0 (byte*) main::nxt#10 nxt zp ZP_PTR_BYTE:2 8.25 @@ -4768,7 +4768,7 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG12 [3] phi (byte) main::scroll#7 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 + //SEG12 [3] phi (byte) main::scroll#7 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 //SEG13 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG14 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] @@ -4776,13 +4776,13 @@ main: { //SEG16 [3] phi (byte) main::scroll#7 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG17 main::@2 b2: - //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG18 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2 //SEG19 main::@3 b3: - //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG20 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -4791,23 +4791,23 @@ main: { inc BGCOL //SEG23 [7] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby=_dec_xby dex - //SEG24 [8] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 + //SEG24 [8] if((byte) main::scroll#1!=(byte/word/signed word) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b4 //SEG25 [9] phi from main::@8 to main::@5 [phi:main::@8->main::@5] - //SEG26 [9] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 + //SEG26 [9] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 //SEG27 [9] phi from main::@5 to main::@5 [phi:main::@5->main::@5] //SEG28 [9] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG29 main::@5 b5: - //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby + //SEG30 [10] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:0 [ main::nxt#9 main::i#2 main::$7 ] ) -- aby=cowo1_derefidx_xby lda line+1,x //SEG31 [11] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] ) -- cowo1_derefidx_xby=aby sta line,x //SEG32 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby=_inc_xby inx - //SEG33 [13] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG33 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b5 //SEG34 main::@10 @@ -4833,7 +4833,7 @@ main: { //SEG44 [17] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG45 main::@6 b6: - //SEG46 [18] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby + //SEG46 [18] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] ) -- _deref_cowo1=xby stx line+$27 //SEG47 [19] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt @@ -4842,7 +4842,7 @@ main: { !: //SEG48 [20] phi from main::@6 to main::@4 [phi:main::@6->main::@4] //SEG49 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG50 [20] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 + //SEG50 [20] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 //SEG51 [20] phi from main::@8 to main::@4 [phi:main::@8->main::@4] //SEG52 [20] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy @@ -4882,7 +4882,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG68 [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym b/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym index 8ffd808a3..f539731c1 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym @@ -6,7 +6,7 @@ (byte*) RASTER (const byte*) RASTER#0 RASTER = (word) 53266 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = (word) 53270 (byte*) TEXT @@ -18,7 +18,7 @@ (byte*) fillscreen::cursor#1 cursor zp ZP_PTR_BYTE:2 16.5 (byte*) fillscreen::cursor#2 cursor zp ZP_PTR_BYTE:2 16.5 (byte) fillscreen::fill -(const byte) fillscreen::fill#0 fill = (byte) 32 +(const byte) fillscreen::fill#0 fill = (byte/signed byte/word/signed word) 32 (byte*) fillscreen::screen (void()) main() (byte~) main::$7 reg byte a 202.0 @@ -39,7 +39,7 @@ (byte) main::i#1 reg byte x 151.5 (byte) main::i#2 reg byte x 134.66666666666666 (byte[]) main::line -(const byte[]) main::line#0 line = (const byte*) SCREEN#0+(byte) 40 +(const byte[]) main::line#0 line = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 (byte*) main::nxt (byte*) main::nxt#1 nxt zp ZP_PTR_BYTE:2 22.0 (byte*) main::nxt#10 nxt zp ZP_PTR_BYTE:2 8.25 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg index 2fd9256de..52066a9ca 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg @@ -11,12 +11,12 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@8 [3] (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) [3] (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) - [3] (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(byte) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) - [3] (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(byte) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) - [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [3] (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(byte/signed byte/word/signed word) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [3] (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(byte/signed byte/word/signed word) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) to:main::@5 main::@5: scope:[main] from main::@3 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) @@ -31,7 +31,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) - [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) + [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) to:scroll_soft::@2 scroll_soft::@2: scope:[scroll_soft] from scroll_soft [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) @@ -40,54 +40,54 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 [14] (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [14] (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [14] (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) - [14] (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + [14] (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte/signed byte/word/signed word) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) to:scroll_soft::@return scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) + [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) - [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) + [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) to:scroll_bit::@4 scroll_bit::@4: scope:[scroll_bit] from scroll_bit [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) - [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) + [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) to:scroll_bit::@1 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 [25] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) - [25] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [25] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [25] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ 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 - [29] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [29] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [29] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [29] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) [30] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) - [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [32] 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:0::scroll_soft:7::scroll_bit:13 [ 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 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - [33] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ) + [33] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ) [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) + [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) - [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) + [37] 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:0::scroll_soft:7::scroll_bit:13 [ 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 - [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -97,25 +97,25 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 [41] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - [42] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) + [42] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) + [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) + [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) + [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) + [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) + [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) + [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) + [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) - [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) + [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ 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 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) @@ -142,7 +142,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 [69] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) - [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 [73] return [ ] ( main:0::fillscreen:2 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log index 385958ac9..9318d2e2c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log @@ -105,21 +105,21 @@ Adding pre/post-modifier (byte*) nxt ← ++ (byte*) nxt Adding pre/post-modifier (byte) scroll_hard::i ← ++ (byte) scroll_hard::i Adding pre/post-modifier (byte*) fillscreen::cursor ← ++ (byte*) fillscreen::cursor PROGRAM - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) RASTER ← (word) 53266 (byte*) BGCOL ← (word) 53280 (byte*) SCROLL ← (word) 53270 (byte*) TEXT ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" proc (void()) main() - (void~) main::$0 ← call fillscreen (byte*) SCREEN (byte) 32 + (void~) main::$0 ← call fillscreen (byte*) SCREEN (byte/signed byte/word/signed word) 32 main::@1: main::@2: - (boolean~) main::$1 ← *((byte*) RASTER) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 main::@3: - (boolean~) main::$2 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 *((byte*) BGCOL) ← ++ *((byte*) BGCOL) (void~) main::$3 ← call scroll_soft @@ -128,13 +128,13 @@ main::@3: main::@return: return endproc // main() - (byte) scroll ← (byte) 7 + (byte) scroll ← (byte/signed byte/word/signed word) 7 proc (void()) scroll_soft() (byte) scroll ← -- (byte) scroll - (boolean~) scroll_soft::$0 ← (byte) scroll == (byte) 255 + (boolean~) scroll_soft::$0 ← (byte) scroll == (byte/word/signed word) 255 (boolean~) scroll_soft::$1 ← ! (boolean~) scroll_soft::$0 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 - (byte) scroll ← (byte) 7 + (byte) scroll ← (byte/signed byte/word/signed word) 7 (void~) scroll_soft::$2 ← call scroll_bit scroll_soft::@1: *((byte*) SCROLL) ← (byte) scroll @@ -142,45 +142,45 @@ scroll_soft::@return: return endproc // scroll_soft() (byte*) current_chargen ← (byte*) CHARGEN - (byte) current_bit ← (byte) 1 + (byte) current_bit ← (byte/signed byte/word/signed word) 1 proc (void()) scroll_bit() - (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte/signed byte/word/signed word) 1 (byte) current_bit ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte) 0 + (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 (byte~) scroll_bit::$3 ← call next_char (word) scroll_bit::c ← (byte~) scroll_bit::$3 - (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN + (word~) scroll_bit::$4 (byte*) current_chargen ← (byte*~) scroll_bit::$5 - (byte) current_bit ← (byte) 128 + (byte) current_bit ← (byte/word/signed word) 128 scroll_bit::@1: (void~) scroll_bit::$6 ← call scroll_hard asm { sei } - *((byte*) PROCPORT) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte) 40 - (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$8 - (byte) scroll_bit::r ← (byte) 0 + (byte) scroll_bit::r ← (byte/signed byte/word/signed word) 0 scroll_bit::@2: (byte~) scroll_bit::$9 ← (byte*) current_chargen *idx (byte) scroll_bit::r (byte) scroll_bit::bits ← (byte~) scroll_bit::$9 (byte) scroll_bit::b ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits & (byte) current_bit - (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 - (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' - (byte) scroll_bit::b ← (byte~) scroll_bit::$13 + (byte/word/signed word~) scroll_bit::$13 ← (byte/word/signed word) 128 + (byte) ' ' + (byte) scroll_bit::b ← (byte/word/signed word~) scroll_bit::$13 scroll_bit::@3: *((byte*) scroll_bit::sc) ← (byte) scroll_bit::b - (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte) 40 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte/signed byte/word/signed word) 40 (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r ← ++ (byte) scroll_bit::r - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } scroll_bit::@return: return @@ -202,58 +202,58 @@ next_char::@return: return (byte) next_char::return endproc // next_char() proc (void()) scroll_hard() - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$0 (byte[]) scroll_hard::line0 ← (byte*~) scroll_hard::$1 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$2 (byte[]) scroll_hard::line1 ← (byte*~) scroll_hard::$3 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$4 (byte[]) scroll_hard::line2 ← (byte*~) scroll_hard::$5 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte~) scroll_hard::$6 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$6 (byte[]) scroll_hard::line3 ← (byte*~) scroll_hard::$7 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$8 (byte[]) scroll_hard::line4 ← (byte*~) scroll_hard::$9 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$10 (byte[]) scroll_hard::line5 ← (byte*~) scroll_hard::$11 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte~) scroll_hard::$12 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$12 (byte[]) scroll_hard::line6 ← (byte*~) scroll_hard::$13 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (byte~) scroll_hard::$14 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$14 (byte[]) scroll_hard::line7 ← (byte*~) scroll_hard::$15 - (byte) scroll_hard::i ← (byte) 0 + (byte) scroll_hard::i ← (byte/signed byte/word/signed word) 0 scroll_hard::@1: - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i ← ++ (byte) scroll_hard::i - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 scroll_hard::@return: return @@ -263,7 +263,7 @@ proc (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) fillscreen::@1: *((byte*) fillscreen::cursor) ← (byte) fillscreen::fill (byte*) fillscreen::cursor ← ++ (byte*) fillscreen::cursor - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 fillscreen::@return: @@ -313,7 +313,7 @@ SYMBOLS (byte~) scroll_bit::$10 (boolean~) scroll_bit::$11 (boolean~) scroll_bit::$12 -(byte~) scroll_bit::$13 +(byte/word/signed word~) scroll_bit::$13 (byte*~) scroll_bit::$14 (boolean~) scroll_bit::$15 (boolean~) scroll_bit::$2 @@ -334,19 +334,19 @@ SYMBOLS (byte) scroll_bit::r (byte*) scroll_bit::sc (void()) scroll_hard() -(byte~) scroll_hard::$0 +(byte/signed byte/word/signed word~) scroll_hard::$0 (byte*~) scroll_hard::$1 -(byte~) scroll_hard::$10 +(byte/word/signed word~) scroll_hard::$10 (byte*~) scroll_hard::$11 -(byte~) scroll_hard::$12 +(byte/word/signed word~) scroll_hard::$12 (byte*~) scroll_hard::$13 -(byte~) scroll_hard::$14 +(word/signed word~) scroll_hard::$14 (byte*~) scroll_hard::$15 (byte~) scroll_hard::$16 (byte~) scroll_hard::$17 (byte~) scroll_hard::$18 (byte~) scroll_hard::$19 -(byte~) scroll_hard::$2 +(byte/signed byte/word/signed word~) scroll_hard::$2 (byte~) scroll_hard::$20 (byte~) scroll_hard::$21 (byte~) scroll_hard::$22 @@ -361,11 +361,11 @@ SYMBOLS (byte~) scroll_hard::$30 (byte~) scroll_hard::$31 (boolean~) scroll_hard::$32 -(byte~) scroll_hard::$4 +(byte/signed byte/word/signed word~) scroll_hard::$4 (byte*~) scroll_hard::$5 -(byte~) scroll_hard::$6 +(byte/signed byte/word/signed word~) scroll_hard::$6 (byte*~) scroll_hard::$7 -(byte~) scroll_hard::$8 +(byte/word/signed word~) scroll_hard::$8 (byte*~) scroll_hard::$9 (label) scroll_hard::@1 (label) scroll_hard::@return @@ -387,27 +387,27 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) RASTER ← (word) 53266 (byte*) BGCOL ← (word) 53280 (byte*) SCROLL ← (word) 53270 (byte*) TEXT ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@1 main: scope:[main] from - (void~) main::$0 ← call fillscreen (byte*) SCREEN (byte) 32 + (void~) main::$0 ← call fillscreen (byte*) SCREEN (byte/signed byte/word/signed word) 32 to:main::@1 main::@1: scope:[main] from main main::@5 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - (boolean~) main::$1 ← *((byte*) RASTER) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@4 main::@4: scope:[main] from main::@2 to:main::@3 main::@3: scope:[main] from main::@3 main::@4 - (boolean~) main::$2 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -422,11 +422,11 @@ main::@return: scope:[main] from main::@6 return to:@return @1: scope:[] from @begin - (byte) scroll ← (byte) 7 + (byte) scroll ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from (byte) scroll ← -- (byte) scroll - (boolean~) scroll_soft::$0 ← (byte) scroll == (byte) 255 + (boolean~) scroll_soft::$0 ← (byte) scroll == (byte/word/signed word) 255 (boolean~) scroll_soft::$1 ← ! (boolean~) scroll_soft::$0 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 @@ -434,7 +434,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 *((byte*) SCROLL) ← (byte) scroll to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte) scroll ← (byte) 7 + (byte) scroll ← (byte/signed byte/word/signed word) 7 (void~) scroll_soft::$2 ← call scroll_bit to:scroll_soft::@1 scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @@ -442,55 +442,55 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 to:@return @2: scope:[] from @1 (byte*) current_chargen ← (byte*) CHARGEN - (byte) current_bit ← (byte) 1 + (byte) current_bit ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from - (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte/signed byte/word/signed word) 1 (byte) current_bit ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte) 0 + (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@4 (void~) scroll_bit::$6 ← call scroll_hard asm { sei } - *((byte*) PROCPORT) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte) 40 - (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$8 - (byte) scroll_bit::r ← (byte) 0 + (byte) scroll_bit::r ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit (byte~) scroll_bit::$3 ← call next_char (word) scroll_bit::c ← (byte~) scroll_bit::$3 - (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN + (word~) scroll_bit::$4 (byte*) current_chargen ← (byte*~) scroll_bit::$5 - (byte) current_bit ← (byte) 128 + (byte) current_bit ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 (byte~) scroll_bit::$9 ← (byte*) current_chargen *idx (byte) scroll_bit::r (byte) scroll_bit::bits ← (byte~) scroll_bit::$9 (byte) scroll_bit::b ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits & (byte) current_bit - (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 *((byte*) scroll_bit::sc) ← (byte) scroll_bit::b - (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte) 40 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte/signed byte/word/signed word) 40 (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r ← ++ (byte) scroll_bit::r - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' - (byte) scroll_bit::b ← (byte~) scroll_bit::$13 + (byte/word/signed word~) scroll_bit::$13 ← (byte/word/signed word) 128 + (byte) ' ' + (byte) scroll_bit::b ← (byte/word/signed word~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -522,59 +522,59 @@ next_char::@3: scope:[next_char] from @4: scope:[] from @3 to:@5 scroll_hard: scope:[scroll_hard] from - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$0 (byte[]) scroll_hard::line0 ← (byte*~) scroll_hard::$1 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$2 (byte[]) scroll_hard::line1 ← (byte*~) scroll_hard::$3 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$4 (byte[]) scroll_hard::line2 ← (byte*~) scroll_hard::$5 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte~) scroll_hard::$6 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$6 (byte[]) scroll_hard::line3 ← (byte*~) scroll_hard::$7 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$8 (byte[]) scroll_hard::line4 ← (byte*~) scroll_hard::$9 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$10 (byte[]) scroll_hard::line5 ← (byte*~) scroll_hard::$11 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte~) scroll_hard::$12 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$12 (byte[]) scroll_hard::line6 ← (byte*~) scroll_hard::$13 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (byte~) scroll_hard::$14 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$14 (byte[]) scroll_hard::line7 ← (byte*~) scroll_hard::$15 - (byte) scroll_hard::i ← (byte) 0 + (byte) scroll_hard::i ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i ← ++ (byte) scroll_hard::i - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@2 scroll_hard::@2: scope:[scroll_hard] from scroll_hard::@1 @@ -590,7 +590,7 @@ fillscreen: scope:[fillscreen] from fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 *((byte*) fillscreen::cursor) ← (byte) fillscreen::fill (byte*) fillscreen::cursor ← ++ (byte*) fillscreen::cursor - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@2 @@ -613,25 +613,25 @@ Removing empty block @5 Removing empty block fillscreen::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) RASTER ← (word) 53266 (byte*) BGCOL ← (word) 53280 (byte*) SCROLL ← (word) 53270 (byte*) TEXT ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@1 main: scope:[main] from - (void~) main::$0 ← call fillscreen (byte*) SCREEN (byte) 32 + (void~) main::$0 ← call fillscreen (byte*) SCREEN (byte/signed byte/word/signed word) 32 to:main::@2 main::@1: scope:[main] from main::@5 to:main::@2 main::@2: scope:[main] from main main::@1 main::@2 - (boolean~) main::$1 ← *((byte*) RASTER) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (boolean~) main::$2 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -644,11 +644,11 @@ main::@return: scope:[main] from main::@5 return to:@return @1: scope:[] from @begin - (byte) scroll ← (byte) 7 + (byte) scroll ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from (byte) scroll ← -- (byte) scroll - (boolean~) scroll_soft::$0 ← (byte) scroll == (byte) 255 + (boolean~) scroll_soft::$0 ← (byte) scroll == (byte/word/signed word) 255 (boolean~) scroll_soft::$1 ← ! (boolean~) scroll_soft::$0 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 @@ -656,7 +656,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 *((byte*) SCROLL) ← (byte) scroll to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte) scroll ← (byte) 7 + (byte) scroll ← (byte/signed byte/word/signed word) 7 (void~) scroll_soft::$2 ← call scroll_bit to:scroll_soft::@1 scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @@ -664,55 +664,55 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 to:@return @2: scope:[] from @1 (byte*) current_chargen ← (byte*) CHARGEN - (byte) current_bit ← (byte) 1 + (byte) current_bit ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from - (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte/signed byte/word/signed word) 1 (byte) current_bit ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte) 0 + (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@4 (void~) scroll_bit::$6 ← call scroll_hard asm { sei } - *((byte*) PROCPORT) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte) 40 - (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$8 - (byte) scroll_bit::r ← (byte) 0 + (byte) scroll_bit::r ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit (byte~) scroll_bit::$3 ← call next_char (word) scroll_bit::c ← (byte~) scroll_bit::$3 - (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN + (word~) scroll_bit::$4 (byte*) current_chargen ← (byte*~) scroll_bit::$5 - (byte) current_bit ← (byte) 128 + (byte) current_bit ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 (byte~) scroll_bit::$9 ← (byte*) current_chargen *idx (byte) scroll_bit::r (byte) scroll_bit::bits ← (byte~) scroll_bit::$9 (byte) scroll_bit::b ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits & (byte) current_bit - (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 *((byte*) scroll_bit::sc) ← (byte) scroll_bit::b - (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte) 40 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte/signed byte/word/signed word) 40 (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r ← ++ (byte) scroll_bit::r - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' - (byte) scroll_bit::b ← (byte~) scroll_bit::$13 + (byte/word/signed word~) scroll_bit::$13 ← (byte/word/signed word) 128 + (byte) ' ' + (byte) scroll_bit::b ← (byte/word/signed word~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -740,59 +740,59 @@ next_char::@return: scope:[next_char] from next_char::@1 return (byte) next_char::return to:@return scroll_hard: scope:[scroll_hard] from - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$0 (byte[]) scroll_hard::line0 ← (byte*~) scroll_hard::$1 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$2 (byte[]) scroll_hard::line1 ← (byte*~) scroll_hard::$3 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$4 (byte[]) scroll_hard::line2 ← (byte*~) scroll_hard::$5 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte~) scroll_hard::$6 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$6 (byte[]) scroll_hard::line3 ← (byte*~) scroll_hard::$7 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$8 (byte[]) scroll_hard::line4 ← (byte*~) scroll_hard::$9 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$10 (byte[]) scroll_hard::line5 ← (byte*~) scroll_hard::$11 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte~) scroll_hard::$12 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$12 (byte[]) scroll_hard::line6 ← (byte*~) scroll_hard::$13 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (byte~) scroll_hard::$14 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$14 (byte[]) scroll_hard::line7 ← (byte*~) scroll_hard::$15 - (byte) scroll_hard::i ← (byte) 0 + (byte) scroll_hard::i ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i ← ++ (byte) scroll_hard::i - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 @@ -804,7 +804,7 @@ fillscreen: scope:[fillscreen] from fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 *((byte*) fillscreen::cursor) ← (byte) fillscreen::fill (byte*) fillscreen::cursor ← ++ (byte*) fillscreen::cursor - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@return @@ -832,9 +832,9 @@ next_char modifies nxt CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) PROCPORT ← (byte) 1 + (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) RASTER ← (word) 53266 (byte*) BGCOL ← (word) 53280 (byte*) SCROLL ← (word) 53270 @@ -842,7 +842,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL to:@1 main: scope:[main] from @6 (byte*) fillscreen::screen ← (byte*) SCREEN - (byte) fillscreen::fill ← (byte) 32 + (byte) fillscreen::fill ← (byte/signed byte/word/signed word) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main @@ -850,11 +850,11 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (boolean~) main::$1 ← *((byte*) RASTER) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (boolean~) main::$2 ← *((byte*) RASTER) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -877,11 +877,11 @@ main::@return: scope:[main] from main::@8 return to:@return @1: scope:[] from @begin - (byte) scroll ← (byte) 7 + (byte) scroll ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll ← -- (byte) scroll - (boolean~) scroll_soft::$0 ← (byte) scroll == (byte) 255 + (boolean~) scroll_soft::$0 ← (byte) scroll == (byte/word/signed word) 255 (boolean~) scroll_soft::$1 ← ! (boolean~) scroll_soft::$0 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 @@ -889,7 +889,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 *((byte*) SCROLL) ← (byte) scroll to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte) scroll ← (byte) 7 + (byte) scroll ← (byte/signed byte/word/signed word) 7 call scroll_bit param-assignment to:scroll_soft::@3 scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2 @@ -906,12 +906,12 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 to:@return @2: scope:[] from @1 (byte*) current_chargen ← (byte*) CHARGEN - (byte) current_bit ← (byte) 1 + (byte) current_bit ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte/signed byte/word/signed word) 1 (byte) current_bit ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte) 0 + (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 @@ -920,11 +920,11 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte) 40 - (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$8 - (byte) scroll_bit::r ← (byte) 0 + (byte) scroll_bit::r ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit (byte) next_char::return ← call next_char param-assignment @@ -933,34 +933,34 @@ scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (byte~) scroll_bit::$3 ← (byte) next_char::return (byte*) nxt ← (byte*) nxt (word) scroll_bit::c ← (byte~) scroll_bit::$3 - (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN + (word~) scroll_bit::$4 (byte*) current_chargen ← (byte*~) scroll_bit::$5 - (byte) current_bit ← (byte) 128 + (byte) current_bit ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte~) scroll_bit::$9 ← (byte*) current_chargen *idx (byte) scroll_bit::r (byte) scroll_bit::bits ← (byte~) scroll_bit::$9 (byte) scroll_bit::b ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits & (byte) current_bit - (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 *((byte*) scroll_bit::sc) ← (byte) scroll_bit::b - (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte) 40 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte/signed byte/word/signed word) 40 (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r ← ++ (byte) scroll_bit::r - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' - (byte) scroll_bit::b ← (byte~) scroll_bit::$13 + (byte/word/signed word~) scroll_bit::$13 ← (byte/word/signed word) 128 + (byte) ' ' + (byte) scroll_bit::b ← (byte/word/signed word~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT) ← (byte) 55 + *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -992,59 +992,59 @@ next_char::@return: scope:[next_char] from next_char::@1 return (byte) next_char::return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$0 (byte[]) scroll_hard::line0 ← (byte*~) scroll_hard::$1 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$2 (byte[]) scroll_hard::line1 ← (byte*~) scroll_hard::$3 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$4 (byte[]) scroll_hard::line2 ← (byte*~) scroll_hard::$5 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte~) scroll_hard::$6 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$6 (byte[]) scroll_hard::line3 ← (byte*~) scroll_hard::$7 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$8 (byte[]) scroll_hard::line4 ← (byte*~) scroll_hard::$9 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$10 (byte[]) scroll_hard::line5 ← (byte*~) scroll_hard::$11 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte~) scroll_hard::$12 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$12 (byte[]) scroll_hard::line6 ← (byte*~) scroll_hard::$13 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (byte~) scroll_hard::$14 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$14 (byte[]) scroll_hard::line7 ← (byte*~) scroll_hard::$15 - (byte) scroll_hard::i ← (byte) 0 + (byte) scroll_hard::i ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7 + (byte) scroll_hard::i) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i ← ++ (byte) scroll_hard::i - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 @@ -1056,7 +1056,7 @@ fillscreen: scope:[fillscreen] from main fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 *((byte*) fillscreen::cursor) ← (byte) fillscreen::fill (byte*) fillscreen::cursor ← ++ (byte*) fillscreen::cursor - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@return @@ -1090,9 +1090,9 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) RASTER#0 ← (word) 53266 (byte*) BGCOL#0 ← (word) 53280 (byte*) SCROLL#0 ← (word) 53270 @@ -1111,7 +1111,7 @@ main: scope:[main] from @6 (byte*) RASTER#5 ← phi( @6/(byte*) RASTER#7 ) (byte*) SCREEN#1 ← phi( @6/(byte*) SCREEN#4 ) (byte*) fillscreen::screen#0 ← (byte*) SCREEN#1 - (byte) fillscreen::fill#0 ← (byte) 32 + (byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main @@ -1152,7 +1152,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#20 main::@2/(byte) scroll#18 main::@7/(byte) scroll#21 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#5 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#6 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#1 main::@7/(byte*) RASTER#4 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 @@ -1167,7 +1167,7 @@ main::@3: scope:[main] from main::@2 main::@3 (byte) scroll#16 ← phi( main::@2/(byte) scroll#18 main::@3/(byte) scroll#16 ) (byte*) BGCOL#3 ← phi( main::@2/(byte*) BGCOL#4 main::@3/(byte*) BGCOL#3 ) (byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 ) - (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -1223,7 +1223,7 @@ main::@return: scope:[main] from main::@8 (byte*) SCREEN#13 ← phi( @begin/(byte*) SCREEN#0 ) (byte*) TEXT#5 ← phi( @begin/(byte*) TEXT#0 ) (byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 ) - (byte) scroll#2 ← (byte) 7 + (byte) scroll#2 ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte*) TEXT#9 ← phi( main::@5/(byte*) TEXT#10 ) @@ -1236,7 +1236,7 @@ scroll_soft: scope:[scroll_soft] from main::@5 (byte*) SCROLL#2 ← phi( main::@5/(byte*) SCROLL#4 ) (byte) scroll#9 ← phi( main::@5/(byte) scroll#13 ) (byte) scroll#3 ← -- (byte) scroll#9 - (boolean~) scroll_soft::$0 ← (byte) scroll#3 == (byte) 255 + (boolean~) scroll_soft::$0 ← (byte) scroll#3 == (byte/word/signed word) 255 (boolean~) scroll_soft::$1 ← ! (boolean~) scroll_soft::$0 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 @@ -1257,7 +1257,7 @@ scroll_soft::@2: scope:[scroll_soft] from scroll_soft (byte*) current_chargen#16 ← phi( scroll_soft/(byte*) current_chargen#23 ) (byte*) nxt#22 ← phi( scroll_soft/(byte*) nxt#28 ) (byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#25 ) - (byte) scroll#4 ← (byte) 7 + (byte) scroll#4 ← (byte/signed byte/word/signed word) 7 call scroll_bit param-assignment to:scroll_soft::@3 scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2 @@ -1291,7 +1291,7 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 (byte*) TEXT#3 ← phi( @1/(byte*) TEXT#5 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) current_chargen#4 ← (byte*) CHARGEN#1 - (byte) current_bit#4 ← (byte) 1 + (byte) current_bit#4 ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 (byte*) TEXT#7 ← phi( scroll_soft::@2/(byte*) TEXT#8 ) @@ -1301,9 +1301,9 @@ scroll_bit: scope:[scroll_bit] from scroll_soft::@2 (byte*) SCREEN#6 ← phi( scroll_soft::@2/(byte*) SCREEN#9 ) (byte*) PROCPORT#5 ← phi( scroll_soft::@2/(byte*) PROCPORT#9 ) (byte) current_bit#13 ← phi( scroll_soft::@2/(byte) current_bit#18 ) - (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$1 ← (byte) current_bit#5 == (byte) 0 + (boolean~) scroll_bit::$1 ← (byte) current_bit#5 == (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 @@ -1322,11 +1322,11 @@ scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 (byte*) SCREEN#2 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) (byte*) PROCPORT#1 ← phi( scroll_bit::@1/(byte*) PROCPORT#3 ) asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte) 40 - (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$8 - (byte) scroll_bit::r#0 ← (byte) 0 + (byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit (byte*) SCREEN#10 ← phi( scroll_bit/(byte*) SCREEN#6 ) @@ -1345,10 +1345,10 @@ scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (byte~) scroll_bit::$3 ← (byte) next_char::return#3 (byte*) nxt#4 ← (byte*) nxt#15 (word) scroll_bit::c#0 ← (byte~) scroll_bit::$3 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#2 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 - (byte) current_bit#6 ← (byte) 128 + (byte) current_bit#6 ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte*) nxt#32 ← phi( scroll_bit::@3/(byte*) nxt#30 scroll_bit::@7/(byte*) nxt#36 ) @@ -1361,7 +1361,7 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::bits#0 ← (byte~) scroll_bit::$9 (byte) scroll_bit::b#0 ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 - (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 @@ -1374,10 +1374,10 @@ scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 scroll_bit::@5/(byte*) scroll_bit::sc#4 ) (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte*) scroll_bit::sc#1 ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#3 - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 @@ -1387,15 +1387,15 @@ scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 (byte*) current_chargen#25 ← phi( scroll_bit::@2/(byte*) current_chargen#12 ) (byte) scroll_bit::r#4 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 ) (byte*) scroll_bit::sc#4 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 ) - (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' - (byte) scroll_bit::b#1 ← (byte~) scroll_bit::$13 + (byte/word/signed word~) scroll_bit::$13 ← (byte/word/signed word) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte/word/signed word~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 (byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#18 ) (byte*) nxt#25 ← phi( scroll_bit::@3/(byte*) nxt#30 ) (byte) current_bit#22 ← phi( scroll_bit::@3/(byte) current_bit#20 ) (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -1448,31 +1448,31 @@ next_char::@return: scope:[next_char] from next_char::@1 to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte*) SCREEN#3 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$0 (byte[]) scroll_hard::line0#0 ← (byte*~) scroll_hard::$1 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$2 (byte[]) scroll_hard::line1#0 ← (byte*~) scroll_hard::$3 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$5 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$4 (byte[]) scroll_hard::line2#0 ← (byte*~) scroll_hard::$5 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$6 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$7 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$6 (byte[]) scroll_hard::line3#0 ← (byte*~) scroll_hard::$7 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$9 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$8 (byte[]) scroll_hard::line4#0 ← (byte*~) scroll_hard::$9 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$10 (byte[]) scroll_hard::line5#0 ← (byte*~) scroll_hard::$11 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$12 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$12 (byte[]) scroll_hard::line6#0 ← (byte*~) scroll_hard::$13 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$14 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$15 ← (byte*) SCREEN#3 + (word/signed word~) scroll_hard::$14 (byte[]) scroll_hard::line7#0 ← (byte*~) scroll_hard::$15 - (byte) scroll_hard::i#0 ← (byte) 0 + (byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 ) @@ -1484,32 +1484,32 @@ scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 ) (byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 ) (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#1 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#1 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#1 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#1 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#1 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#1 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#1 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 @@ -1526,7 +1526,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte) fillscreen::fill#1 ← phi( fillscreen/(byte) fillscreen::fill#2 fillscreen::@1/(byte) fillscreen::fill#1 ) *((byte*) fillscreen::cursor#2) ← (byte) fillscreen::fill#1 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor#1 < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@return @@ -1561,9 +1561,9 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) RASTER#0 ← (word) 53266 (byte*) BGCOL#0 ← (word) 53280 (byte*) SCROLL#0 ← (word) 53270 @@ -1582,7 +1582,7 @@ main: scope:[main] from @6 (byte*) RASTER#5 ← phi( @6/(byte*) RASTER#7 ) (byte*) SCREEN#1 ← phi( @6/(byte*) SCREEN#4 ) (byte*) fillscreen::screen#0 ← (byte*) SCREEN#1 - (byte) fillscreen::fill#0 ← (byte) 32 + (byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main @@ -1623,7 +1623,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#20 main::@2/(byte) scroll#18 main::@7/(byte) scroll#21 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#5 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#6 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#1 main::@7/(byte*) RASTER#4 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 @@ -1638,7 +1638,7 @@ main::@3: scope:[main] from main::@2 main::@3 (byte) scroll#16 ← phi( main::@2/(byte) scroll#18 main::@3/(byte) scroll#16 ) (byte*) BGCOL#3 ← phi( main::@2/(byte*) BGCOL#4 main::@3/(byte*) BGCOL#3 ) (byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 ) - (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -1694,7 +1694,7 @@ main::@return: scope:[main] from main::@8 (byte*) SCREEN#13 ← phi( @begin/(byte*) SCREEN#0 ) (byte*) TEXT#5 ← phi( @begin/(byte*) TEXT#0 ) (byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 ) - (byte) scroll#2 ← (byte) 7 + (byte) scroll#2 ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte*) TEXT#9 ← phi( main::@5/(byte*) TEXT#10 ) @@ -1707,7 +1707,7 @@ scroll_soft: scope:[scroll_soft] from main::@5 (byte*) SCROLL#2 ← phi( main::@5/(byte*) SCROLL#4 ) (byte) scroll#9 ← phi( main::@5/(byte) scroll#13 ) (byte) scroll#3 ← -- (byte) scroll#9 - (boolean~) scroll_soft::$0 ← (byte) scroll#3 == (byte) 255 + (boolean~) scroll_soft::$0 ← (byte) scroll#3 == (byte/word/signed word) 255 (boolean~) scroll_soft::$1 ← ! (boolean~) scroll_soft::$0 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 @@ -1728,7 +1728,7 @@ scroll_soft::@2: scope:[scroll_soft] from scroll_soft (byte*) current_chargen#16 ← phi( scroll_soft/(byte*) current_chargen#23 ) (byte*) nxt#22 ← phi( scroll_soft/(byte*) nxt#28 ) (byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#25 ) - (byte) scroll#4 ← (byte) 7 + (byte) scroll#4 ← (byte/signed byte/word/signed word) 7 call scroll_bit param-assignment to:scroll_soft::@3 scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2 @@ -1762,7 +1762,7 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 (byte*) TEXT#3 ← phi( @1/(byte*) TEXT#5 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) current_chargen#4 ← (byte*) CHARGEN#1 - (byte) current_bit#4 ← (byte) 1 + (byte) current_bit#4 ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 (byte*) TEXT#7 ← phi( scroll_soft::@2/(byte*) TEXT#8 ) @@ -1772,9 +1772,9 @@ scroll_bit: scope:[scroll_bit] from scroll_soft::@2 (byte*) SCREEN#6 ← phi( scroll_soft::@2/(byte*) SCREEN#9 ) (byte*) PROCPORT#5 ← phi( scroll_soft::@2/(byte*) PROCPORT#9 ) (byte) current_bit#13 ← phi( scroll_soft::@2/(byte) current_bit#18 ) - (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$1 ← (byte) current_bit#5 == (byte) 0 + (boolean~) scroll_bit::$1 ← (byte) current_bit#5 == (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 @@ -1793,11 +1793,11 @@ scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 (byte*) SCREEN#2 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) (byte*) PROCPORT#1 ← phi( scroll_bit::@1/(byte*) PROCPORT#3 ) asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte) 40 - (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$8 - (byte) scroll_bit::r#0 ← (byte) 0 + (byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit (byte*) SCREEN#10 ← phi( scroll_bit/(byte*) SCREEN#6 ) @@ -1817,10 +1817,10 @@ scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (byte~) scroll_bit::$3 ← (byte) next_char::return#3 (byte*) nxt#4 ← (byte*) nxt#15 (word) scroll_bit::c#0 ← (byte~) scroll_bit::$3 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#2 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 - (byte) current_bit#6 ← (byte) 128 + (byte) current_bit#6 ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte*) nxt#32 ← phi( scroll_bit::@3/(byte*) nxt#30 scroll_bit::@7/(byte*) nxt#36 ) @@ -1833,7 +1833,7 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::bits#0 ← (byte~) scroll_bit::$9 (byte) scroll_bit::b#0 ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 - (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte/signed byte/word/signed word) 0 (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 @@ -1846,10 +1846,10 @@ scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 scroll_bit::@5/(byte*) scroll_bit::sc#4 ) (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte*) scroll_bit::sc#1 ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#3 - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 @@ -1859,15 +1859,15 @@ scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 (byte*) current_chargen#25 ← phi( scroll_bit::@2/(byte*) current_chargen#12 ) (byte) scroll_bit::r#4 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 ) (byte*) scroll_bit::sc#4 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 ) - (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' - (byte) scroll_bit::b#1 ← (byte~) scroll_bit::$13 + (byte/word/signed word~) scroll_bit::$13 ← (byte/word/signed word) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte/word/signed word~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 (byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#18 ) (byte*) nxt#25 ← phi( scroll_bit::@3/(byte*) nxt#30 ) (byte) current_bit#22 ← phi( scroll_bit::@3/(byte) current_bit#20 ) (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -1920,31 +1920,31 @@ next_char::@return: scope:[next_char] from next_char::@1 to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte*) SCREEN#3 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$0 (byte[]) scroll_hard::line0#0 ← (byte*~) scroll_hard::$1 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$2 (byte[]) scroll_hard::line1#0 ← (byte*~) scroll_hard::$3 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$5 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$4 (byte[]) scroll_hard::line2#0 ← (byte*~) scroll_hard::$5 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$6 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$7 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$6 (byte[]) scroll_hard::line3#0 ← (byte*~) scroll_hard::$7 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$9 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$8 (byte[]) scroll_hard::line4#0 ← (byte*~) scroll_hard::$9 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$10 (byte[]) scroll_hard::line5#0 ← (byte*~) scroll_hard::$11 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$12 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$12 (byte[]) scroll_hard::line6#0 ← (byte*~) scroll_hard::$13 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$14 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$15 ← (byte*) SCREEN#3 + (word/signed word~) scroll_hard::$14 (byte[]) scroll_hard::line7#0 ← (byte*~) scroll_hard::$15 - (byte) scroll_hard::i#0 ← (byte) 0 + (byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 ) @@ -1956,32 +1956,32 @@ scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 ) (byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 ) (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#1 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#1 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#1 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#1 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#1 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#1 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#1 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 @@ -1998,7 +1998,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte) fillscreen::fill#1 ← phi( fillscreen/(byte) fillscreen::fill#2 fillscreen::@1/(byte) fillscreen::fill#1 ) *((byte*) fillscreen::cursor#2) ← (byte) fillscreen::fill#1 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor#1 < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@return @@ -2344,7 +2344,7 @@ INITIAL SSA SYMBOL TABLE (byte~) scroll_bit::$10 (boolean~) scroll_bit::$11 (boolean~) scroll_bit::$12 -(byte~) scroll_bit::$13 +(byte/word/signed word~) scroll_bit::$13 (byte*~) scroll_bit::$14 (boolean~) scroll_bit::$15 (boolean~) scroll_bit::$2 @@ -2384,19 +2384,19 @@ INITIAL SSA SYMBOL TABLE (byte*) scroll_bit::sc#3 (byte*) scroll_bit::sc#4 (void()) scroll_hard() -(byte~) scroll_hard::$0 +(byte/signed byte/word/signed word~) scroll_hard::$0 (byte*~) scroll_hard::$1 -(byte~) scroll_hard::$10 +(byte/word/signed word~) scroll_hard::$10 (byte*~) scroll_hard::$11 -(byte~) scroll_hard::$12 +(byte/word/signed word~) scroll_hard::$12 (byte*~) scroll_hard::$13 -(byte~) scroll_hard::$14 +(word/signed word~) scroll_hard::$14 (byte*~) scroll_hard::$15 (byte~) scroll_hard::$16 (byte~) scroll_hard::$17 (byte~) scroll_hard::$18 (byte~) scroll_hard::$19 -(byte~) scroll_hard::$2 +(byte/signed byte/word/signed word~) scroll_hard::$2 (byte~) scroll_hard::$20 (byte~) scroll_hard::$21 (byte~) scroll_hard::$22 @@ -2411,11 +2411,11 @@ INITIAL SSA SYMBOL TABLE (byte~) scroll_hard::$30 (byte~) scroll_hard::$31 (boolean~) scroll_hard::$32 -(byte~) scroll_hard::$4 +(byte/signed byte/word/signed word~) scroll_hard::$4 (byte*~) scroll_hard::$5 -(byte~) scroll_hard::$6 +(byte/signed byte/word/signed word~) scroll_hard::$6 (byte*~) scroll_hard::$7 -(byte~) scroll_hard::$8 +(byte/word/signed word~) scroll_hard::$8 (byte*~) scroll_hard::$9 (label) scroll_hard::@1 (label) scroll_hard::@return @@ -2455,16 +2455,16 @@ INITIAL SSA SYMBOL TABLE (label) scroll_soft::@3 (label) scroll_soft::@return -Inversing boolean not (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte) 255 from (boolean~) scroll_soft::$0 ← (byte) scroll#3 == (byte) 255 -Inversing boolean not (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 from (boolean~) scroll_bit::$1 ← (byte) current_bit#5 == (byte) 0 -Inversing boolean not (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 from (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 +Inversing boolean not (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte/word/signed word) 255 from (boolean~) scroll_soft::$0 ← (byte) scroll#3 == (byte/word/signed word) 255 +Inversing boolean not (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte/signed byte/word/signed word) 0 from (boolean~) scroll_bit::$1 ← (byte) current_bit#5 == (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte/signed byte/word/signed word) 0 from (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte/signed byte/word/signed word) 0 Inversing boolean not (boolean~) next_char::$1 ← (byte) next_char::c#0 != (byte) '@' from (boolean~) next_char::$0 ← (byte) next_char::c#0 == (byte) '@' Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) RASTER#0 ← (word) 53266 (byte*) BGCOL#0 ← (word) 53280 (byte*) SCROLL#0 ← (word) 53270 @@ -2483,7 +2483,7 @@ main: scope:[main] from @6 (byte*) RASTER#5 ← phi( @6/(byte*) RASTER#7 ) (byte*) SCREEN#1 ← phi( @6/(byte*) SCREEN#4 ) (byte*) fillscreen::screen#0 ← (byte*) SCREEN#1 - (byte) fillscreen::fill#0 ← (byte) 32 + (byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main @@ -2524,7 +2524,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#20 main::@2/(byte) scroll#18 main::@7/(byte) scroll#21 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#5 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#6 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#1 main::@7/(byte*) RASTER#4 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 @@ -2539,7 +2539,7 @@ main::@3: scope:[main] from main::@2 main::@3 (byte) scroll#16 ← phi( main::@2/(byte) scroll#18 main::@3/(byte) scroll#16 ) (byte*) BGCOL#3 ← phi( main::@2/(byte*) BGCOL#4 main::@3/(byte*) BGCOL#3 ) (byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 ) - (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -2595,7 +2595,7 @@ main::@return: scope:[main] from main::@8 (byte*) SCREEN#13 ← phi( @begin/(byte*) SCREEN#0 ) (byte*) TEXT#5 ← phi( @begin/(byte*) TEXT#0 ) (byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 ) - (byte) scroll#2 ← (byte) 7 + (byte) scroll#2 ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte*) TEXT#9 ← phi( main::@5/(byte*) TEXT#10 ) @@ -2608,7 +2608,7 @@ scroll_soft: scope:[scroll_soft] from main::@5 (byte*) SCROLL#2 ← phi( main::@5/(byte*) SCROLL#4 ) (byte) scroll#9 ← phi( main::@5/(byte) scroll#13 ) (byte) scroll#3 ← -- (byte) scroll#9 - (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte) 255 + (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte/word/signed word) 255 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 @@ -2628,7 +2628,7 @@ scroll_soft::@2: scope:[scroll_soft] from scroll_soft (byte*) current_chargen#16 ← phi( scroll_soft/(byte*) current_chargen#23 ) (byte*) nxt#22 ← phi( scroll_soft/(byte*) nxt#28 ) (byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#25 ) - (byte) scroll#4 ← (byte) 7 + (byte) scroll#4 ← (byte/signed byte/word/signed word) 7 call scroll_bit param-assignment to:scroll_soft::@3 scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2 @@ -2662,7 +2662,7 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 (byte*) TEXT#3 ← phi( @1/(byte*) TEXT#5 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) current_chargen#4 ← (byte*) CHARGEN#1 - (byte) current_bit#4 ← (byte) 1 + (byte) current_bit#4 ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 (byte*) TEXT#7 ← phi( scroll_soft::@2/(byte*) TEXT#8 ) @@ -2672,9 +2672,9 @@ scroll_bit: scope:[scroll_bit] from scroll_soft::@2 (byte*) SCREEN#6 ← phi( scroll_soft::@2/(byte*) SCREEN#9 ) (byte*) PROCPORT#5 ← phi( scroll_soft::@2/(byte*) PROCPORT#9 ) (byte) current_bit#13 ← phi( scroll_soft::@2/(byte) current_bit#18 ) - (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 @@ -2692,11 +2692,11 @@ scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 (byte*) SCREEN#2 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) (byte*) PROCPORT#1 ← phi( scroll_bit::@1/(byte*) PROCPORT#3 ) asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte) 40 - (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$8 - (byte) scroll_bit::r#0 ← (byte) 0 + (byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit (byte*) SCREEN#10 ← phi( scroll_bit/(byte*) SCREEN#6 ) @@ -2716,10 +2716,10 @@ scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (byte~) scroll_bit::$3 ← (byte) next_char::return#3 (byte*) nxt#4 ← (byte*) nxt#15 (word) scroll_bit::c#0 ← (byte~) scroll_bit::$3 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#2 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 - (byte) current_bit#6 ← (byte) 128 + (byte) current_bit#6 ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte*) nxt#32 ← phi( scroll_bit::@3/(byte*) nxt#30 scroll_bit::@7/(byte*) nxt#36 ) @@ -2732,7 +2732,7 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::bits#0 ← (byte~) scroll_bit::$9 (byte) scroll_bit::b#0 ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 - (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 @@ -2744,10 +2744,10 @@ scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 scroll_bit::@5/(byte*) scroll_bit::sc#4 ) (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte*) scroll_bit::sc#1 ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#3 - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 @@ -2757,15 +2757,15 @@ scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 (byte*) current_chargen#25 ← phi( scroll_bit::@2/(byte*) current_chargen#12 ) (byte) scroll_bit::r#4 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 ) (byte*) scroll_bit::sc#4 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 ) - (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' - (byte) scroll_bit::b#1 ← (byte~) scroll_bit::$13 + (byte/word/signed word~) scroll_bit::$13 ← (byte/word/signed word) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte/word/signed word~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 (byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#18 ) (byte*) nxt#25 ← phi( scroll_bit::@3/(byte*) nxt#30 ) (byte) current_bit#22 ← phi( scroll_bit::@3/(byte) current_bit#20 ) (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 ) - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -2817,31 +2817,31 @@ next_char::@return: scope:[next_char] from next_char::@1 to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte*) SCREEN#3 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$0 (byte[]) scroll_hard::line0#0 ← (byte*~) scroll_hard::$1 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$2 (byte[]) scroll_hard::line1#0 ← (byte*~) scroll_hard::$3 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$5 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$4 (byte[]) scroll_hard::line2#0 ← (byte*~) scroll_hard::$5 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$6 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$7 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$6 (byte[]) scroll_hard::line3#0 ← (byte*~) scroll_hard::$7 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$9 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$8 (byte[]) scroll_hard::line4#0 ← (byte*~) scroll_hard::$9 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$10 (byte[]) scroll_hard::line5#0 ← (byte*~) scroll_hard::$11 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$12 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$12 (byte[]) scroll_hard::line6#0 ← (byte*~) scroll_hard::$13 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$14 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$15 ← (byte*) SCREEN#3 + (word/signed word~) scroll_hard::$14 (byte[]) scroll_hard::line7#0 ← (byte*~) scroll_hard::$15 - (byte) scroll_hard::i#0 ← (byte) 0 + (byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 ) @@ -2853,32 +2853,32 @@ scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 ) (byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 ) (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#1 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#1 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#1 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#1 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#1 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#1 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#1 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 @@ -2895,7 +2895,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte) fillscreen::fill#1 ← phi( fillscreen/(byte) fillscreen::fill#2 fillscreen::@1/(byte) fillscreen::fill#1 ) *((byte*) fillscreen::cursor#2) ← (byte) fillscreen::fill#1 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor#1 < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@return @@ -2984,7 +2984,7 @@ Alias (byte*) current_chargen#12 = (byte*) current_chargen#25 Alias (byte) current_bit#14 = (byte) current_bit#27 Alias (byte*) PROCPORT#7 = (byte*) PROCPORT#8 Alias (byte*) nxt#32 = (byte*) nxt#33 -Alias (byte) scroll_bit::b#1 = (byte~) scroll_bit::$13 +Alias (byte) scroll_bit::b#1 = (byte/word/signed word~) scroll_bit::$13 Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#4 Alias (byte[]) scroll_hard::line0#0 = (byte*~) scroll_hard::$1 Alias (byte[]) scroll_hard::line1#0 = (byte*~) scroll_hard::$3 @@ -2999,9 +2999,9 @@ Alias (byte) fillscreen::fill#0 = (byte) fillscreen::fill#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) RASTER#0 ← (word) 53266 (byte*) BGCOL#0 ← (word) 53280 (byte*) SCROLL#0 ← (word) 53270 @@ -3011,7 +3011,7 @@ main: scope:[main] from @6 (byte*) TEXT#15 ← phi( @6/(byte*) TEXT#17 ) (byte*) CHARGEN#13 ← phi( @6/(byte*) CHARGEN#15 ) (byte*) fillscreen::cursor#0 ← (byte*) SCREEN#0 - (byte) fillscreen::fill#0 ← (byte) 32 + (byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main @@ -3032,7 +3032,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@2/(byte) scroll#18 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#1 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@7/(byte*) RASTER#0 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 @@ -3047,7 +3047,7 @@ main::@3: scope:[main] from main::@2 main::@3 (byte) scroll#13 ← phi( main::@2/(byte) scroll#18 main::@3/(byte) scroll#13 ) (byte*) BGCOL#1 ← phi( main::@2/(byte*) BGCOL#4 main::@3/(byte*) BGCOL#1 ) (byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 ) - (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -3062,11 +3062,11 @@ main::@return: scope:[main] from main::@8 return to:@return @1: scope:[] from @begin - (byte) scroll#15 ← (byte) 7 + (byte) scroll#15 ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#13 - (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte) 255 + (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte/word/signed word) 255 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 @@ -3078,7 +3078,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 *((byte*) SCROLL#1) ← (byte) scroll#0 to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte) scroll#14 ← (byte) 7 + (byte) scroll#14 ← (byte/signed byte/word/signed word) 7 call scroll_bit param-assignment to:scroll_soft::@3 scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2 @@ -3089,12 +3089,12 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#0 ) (byte*) CHARGEN#0 ← (byte*) CHARGEN#1 - (byte) current_bit#23 ← (byte) 1 + (byte) current_bit#23 ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 @@ -3107,20 +3107,20 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 - (byte) scroll_bit::r#0 ← (byte) 0 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 + (byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#11 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 - (byte) current_bit#6 ← (byte) 128 + (byte) current_bit#6 ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte*) nxt#32 ← phi( scroll_bit::@3/(byte*) nxt#13 scroll_bit::@7/(byte*) nxt#36 ) @@ -3132,7 +3132,7 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::bits#0 ← (byte*) current_chargen#12 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 - (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 @@ -3144,16 +3144,16 @@ scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 scroll_bit::@5/(byte*) scroll_bit::sc#3 ) (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#3 - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte/word/signed word) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -3181,23 +3181,23 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$0 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$2 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$4 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$6 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$8 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$10 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$12 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$14 - (byte) scroll_hard::i#0 ← (byte) 0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word~) scroll_hard::$6 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#2 + (byte/word/signed word~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#2 + (byte/word/signed word~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#2 + (byte/word/signed word~) scroll_hard::$12 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#2 + (word/signed word~) scroll_hard::$14 + (byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 ) @@ -3209,32 +3209,32 @@ scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 ) (byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 ) (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#1 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#1 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#1 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#1 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#1 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#1 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#1 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 @@ -3248,7 +3248,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte) fillscreen::fill#1 ← phi( fillscreen/(byte) fillscreen::fill#0 fillscreen::@1/(byte) fillscreen::fill#1 ) *((byte*) fillscreen::cursor#2) ← (byte) fillscreen::fill#1 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor#1 < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@return @@ -3282,9 +3282,9 @@ Alias (byte*) nxt#13 = (byte*) nxt#32 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) RASTER#0 ← (word) 53266 (byte*) BGCOL#0 ← (word) 53280 (byte*) SCROLL#0 ← (word) 53270 @@ -3292,7 +3292,7 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @6 (byte*) fillscreen::cursor#0 ← (byte*) SCREEN#0 - (byte) fillscreen::fill#0 ← (byte) 32 + (byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main @@ -3311,7 +3311,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@2/(byte) scroll#18 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#1 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@7/(byte*) RASTER#0 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 @@ -3326,7 +3326,7 @@ main::@3: scope:[main] from main::@2 main::@3 (byte) scroll#13 ← phi( main::@2/(byte) scroll#18 main::@3/(byte) scroll#13 ) (byte*) BGCOL#1 ← phi( main::@2/(byte*) BGCOL#4 main::@3/(byte*) BGCOL#1 ) (byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 ) - (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -3341,11 +3341,11 @@ main::@return: scope:[main] from main::@8 return to:@return @1: scope:[] from @begin - (byte) scroll#15 ← (byte) 7 + (byte) scroll#15 ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#13 - (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte) 255 + (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte/word/signed word) 255 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 @@ -3356,7 +3356,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 *((byte*) SCROLL#1) ← (byte) scroll#0 to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte) scroll#14 ← (byte) 7 + (byte) scroll#14 ← (byte/signed byte/word/signed word) 7 call scroll_bit param-assignment to:scroll_soft::@3 scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2 @@ -3365,12 +3365,12 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return @2: scope:[] from @1 - (byte) current_bit#23 ← (byte) 1 + (byte) current_bit#23 ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 @@ -3381,20 +3381,20 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#10 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 - (byte) scroll_bit::r#0 ← (byte) 0 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 + (byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#11 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 - (byte) current_bit#6 ← (byte) 128 + (byte) current_bit#6 ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte*) nxt#13 ← phi( scroll_bit::@3/(byte*) nxt#13 scroll_bit::@7/(byte*) nxt#36 ) @@ -3406,22 +3406,22 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::bits#0 ← (byte*) current_chargen#10 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#11 - (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte/word/signed word) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -3446,23 +3446,23 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$0 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$2 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$4 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$6 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$8 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$10 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$12 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$14 - (byte) scroll_hard::i#0 ← (byte) 0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word~) scroll_hard::$6 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#10 + (byte/word/signed word~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#10 + (byte/word/signed word~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#10 + (byte/word/signed word~) scroll_hard::$12 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#10 + (word/signed word~) scroll_hard::$14 + (byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 scroll_hard::@1/(byte[]) scroll_hard::line7#1 ) @@ -3474,32 +3474,32 @@ scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 scroll_hard::@1/(byte[]) scroll_hard::line1#1 ) (byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 scroll_hard::@1/(byte[]) scroll_hard::line0#1 ) (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#1 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#1 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#1 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#1 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#1 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#1 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#1 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 @@ -3513,7 +3513,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte) fillscreen::fill#1 ← phi( fillscreen/(byte) fillscreen::fill#0 fillscreen::@1/(byte) fillscreen::fill#1 ) *((byte*) fillscreen::cursor#2) ← (byte) fillscreen::fill#1 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor#1 < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@return @@ -3574,9 +3574,9 @@ Self Phi Eliminated (byte*) fillscreen::screen#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) RASTER#0 ← (word) 53266 (byte*) BGCOL#0 ← (word) 53280 (byte*) SCROLL#0 ← (word) 53270 @@ -3584,7 +3584,7 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @6 (byte*) fillscreen::cursor#0 ← (byte*) SCREEN#0 - (byte) fillscreen::fill#0 ← (byte) 32 + (byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main @@ -3603,7 +3603,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#1 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@7/(byte*) RASTER#0 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 @@ -3618,7 +3618,7 @@ main::@3: scope:[main] from main::@2 main::@3 (byte) scroll#13 ← phi( main::@2/(byte) scroll#18 ) (byte*) BGCOL#1 ← phi( main::@2/(byte*) BGCOL#4 ) (byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 ) - (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -3633,11 +3633,11 @@ main::@return: scope:[main] from main::@8 return to:@return @1: scope:[] from @begin - (byte) scroll#15 ← (byte) 7 + (byte) scroll#15 ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#13 - (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte) 255 + (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte/word/signed word) 255 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 @@ -3648,7 +3648,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 *((byte*) SCROLL#1) ← (byte) scroll#0 to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte) scroll#14 ← (byte) 7 + (byte) scroll#14 ← (byte/signed byte/word/signed word) 7 call scroll_bit param-assignment to:scroll_soft::@3 scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2 @@ -3657,12 +3657,12 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return @2: scope:[] from @1 - (byte) current_bit#23 ← (byte) 1 + (byte) current_bit#23 ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 @@ -3673,20 +3673,20 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#10 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 - (byte) scroll_bit::r#0 ← (byte) 0 + *((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 + (byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#11 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 - (byte) current_bit#6 ← (byte) 128 + (byte) current_bit#6 ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte*) nxt#13 ← phi( scroll_bit::@7/(byte*) nxt#36 ) @@ -3698,22 +3698,22 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::bits#0 ← (byte*) current_chargen#10 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#11 - (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte/word/signed word) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#2) ← (byte) 55 + *((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -3738,23 +3738,23 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$0 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$2 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$4 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$6 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$8 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$10 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$12 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$14 - (byte) scroll_hard::i#0 ← (byte) 0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#10 + (byte/signed byte/word/signed word~) scroll_hard::$6 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#10 + (byte/word/signed word~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#10 + (byte/word/signed word~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#10 + (byte/word/signed word~) scroll_hard::$12 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#10 + (word/signed word~) scroll_hard::$14 + (byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line7#1 ← phi( scroll_hard/(byte[]) scroll_hard::line7#0 ) @@ -3766,32 +3766,32 @@ scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte[]) scroll_hard::line1#1 ← phi( scroll_hard/(byte[]) scroll_hard::line1#0 ) (byte[]) scroll_hard::line0#1 ← phi( scroll_hard/(byte[]) scroll_hard::line0#0 ) (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#1 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#1 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#1 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#1 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#1 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#1 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#1 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#1 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 @@ -3805,7 +3805,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte) fillscreen::fill#1 ← phi( fillscreen/(byte) fillscreen::fill#0 ) *((byte*) fillscreen::cursor#2) ← (byte) fillscreen::fill#1 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::screen#2 + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor#1 < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@return @@ -3847,9 +3847,9 @@ Redundant Phi (byte*) fillscreen::screen#2 (byte*) fillscreen::cursor#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) RASTER#0 ← (word) 53266 (byte*) BGCOL#0 ← (word) 53280 (byte*) SCROLL#0 ← (word) 53270 @@ -3857,7 +3857,7 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @6 (byte*) fillscreen::cursor#0 ← (byte*) SCREEN#0 - (byte) fillscreen::fill#0 ← (byte) 32 + (byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main @@ -3876,11 +3876,11 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(byte*) RASTER#0 ) - (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte) 254 + (boolean~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word) 254 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (boolean~) main::$2 ← *((byte*) RASTER#1) != (byte) 255 + (boolean~) main::$2 ← *((byte*) RASTER#1) != (byte/word/signed word) 255 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 @@ -3895,11 +3895,11 @@ main::@return: scope:[main] from main::@8 return to:@return @1: scope:[] from @begin - (byte) scroll#15 ← (byte) 7 + (byte) scroll#15 ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte) 255 + (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte/word/signed word) 255 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 @@ -3910,7 +3910,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 *((byte*) SCROLL#7) ← (byte) scroll#0 to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte) scroll#14 ← (byte) 7 + (byte) scroll#14 ← (byte/signed byte/word/signed word) 7 call scroll_bit param-assignment to:scroll_soft::@3 scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2 @@ -3919,12 +3919,12 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return @2: scope:[] from @1 - (byte) current_bit#23 ← (byte) 1 + (byte) current_bit#23 ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 @@ -3935,20 +3935,20 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 - (byte) scroll_bit::r#0 ← (byte) 0 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 + (byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 - (byte) current_bit#6 ← (byte) 128 + (byte) current_bit#6 ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) @@ -3956,22 +3956,22 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte/signed byte/word/signed word) 0 if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte/signed byte/word/signed word) 8 if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte/word/signed word) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#14) ← (byte) 55 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -3996,52 +3996,52 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$0 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$2 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$4 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$6 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$8 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$10 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$12 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$14 - (byte) scroll_hard::i#0 ← (byte) 0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word~) scroll_hard::$6 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (byte/word/signed word~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (byte/word/signed word~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (byte/word/signed word~) scroll_hard::$12 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (word/signed word~) scroll_hard::$14 + (byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte) 39 + (boolean~) scroll_hard::$32 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39 if((boolean~) scroll_hard::$32) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 @@ -4053,7 +4053,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte*) fillscreen::cursor#2 ← phi( fillscreen/(byte*) fillscreen::cursor#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) *((byte*) fillscreen::cursor#2) ← (byte) fillscreen::fill#0 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (byte*) fillscreen::cursor#0 + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::cursor#0 + (word/signed word) 1000 (boolean~) fillscreen::$1 ← (byte*) fillscreen::cursor#1 < (byte*~) fillscreen::$0 if((boolean~) fillscreen::$1) goto fillscreen::@1 to:fillscreen::@return @@ -4067,21 +4067,21 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 to:@end @end: scope:[] from @7 -Simple Condition (boolean~) main::$1 if(*((byte*) RASTER#1)!=(byte) 254) goto main::@2 -Simple Condition (boolean~) main::$2 if(*((byte*) RASTER#1)!=(byte) 255) goto main::@3 -Simple Condition (boolean~) scroll_soft::$1 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 -Simple Condition (boolean~) scroll_bit::$2 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 -Simple Condition (boolean~) scroll_bit::$12 if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 -Simple Condition (boolean~) scroll_bit::$15 if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 +Simple Condition (boolean~) main::$1 if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@2 +Simple Condition (boolean~) main::$2 if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@3 +Simple Condition (boolean~) scroll_soft::$1 if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 +Simple Condition (boolean~) scroll_bit::$2 if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 +Simple Condition (boolean~) scroll_bit::$12 if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 +Simple Condition (boolean~) scroll_bit::$15 if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 Simple Condition (boolean~) next_char::$1 if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 -Simple Condition (boolean~) scroll_hard::$32 if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 +Simple Condition (boolean~) scroll_hard::$32 if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 Simple Condition (boolean~) fillscreen::$1 if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte) 1 + (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) RASTER#0 ← (word) 53266 (byte*) BGCOL#0 ← (word) 53280 (byte*) SCROLL#0 ← (word) 53270 @@ -4089,7 +4089,7 @@ CONTROL FLOW GRAPH to:@1 main: scope:[main] from @6 (byte*) fillscreen::cursor#0 ← (byte*) SCREEN#0 - (byte) fillscreen::fill#0 ← (byte) 32 + (byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main @@ -4108,10 +4108,10 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(byte*) RASTER#0 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@2 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((byte*) BGCOL#4) ← ++ *((byte*) BGCOL#4) @@ -4125,11 +4125,11 @@ main::@return: scope:[main] from main::@8 return to:@return @1: scope:[] from @begin - (byte) scroll#15 ← (byte) 7 + (byte) scroll#15 ← (byte/signed byte/word/signed word) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) @@ -4139,7 +4139,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 *((byte*) SCROLL#7) ← (byte) scroll#0 to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte) scroll#14 ← (byte) 7 + (byte) scroll#14 ← (byte/signed byte/word/signed word) 7 call scroll_bit param-assignment to:scroll_soft::@3 scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2 @@ -4148,12 +4148,12 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return @2: scope:[] from @1 - (byte) current_bit#23 ← (byte) 1 + (byte) current_bit#23 ← (byte/signed byte/word/signed word) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -4163,20 +4163,20 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 - (byte) scroll_bit::r#0 ← (byte) 0 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 + (byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 - (byte) current_bit#6 ← (byte) 128 + (byte) current_bit#6 ← (byte/word/signed word) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) @@ -4184,20 +4184,20 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte/word/signed word) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#14) ← (byte) 55 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -4221,52 +4221,52 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$0 - (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$2 - (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$4 - (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$6 - (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$8 - (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$10 - (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$12 - (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$14 - (byte) scroll_hard::i#0 ← (byte) 0 + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word~) scroll_hard::$2 + (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word~) scroll_hard::$4 + (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word~) scroll_hard::$6 + (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (byte/word/signed word~) scroll_hard::$8 + (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (byte/word/signed word~) scroll_hard::$10 + (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (byte/word/signed word~) scroll_hard::$12 + (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (word/signed word~) scroll_hard::$14 + (byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -4277,7 +4277,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte*) fillscreen::cursor#2 ← phi( fillscreen/(byte*) fillscreen::cursor#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) *((byte*) fillscreen::cursor#2) ← (byte) fillscreen::fill#0 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (byte*) fillscreen::cursor#0 + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::cursor#0 + (word/signed word) 1000 if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1 to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 @@ -4305,14 +4305,14 @@ Constant (const byte) scroll_bit::r#0 = 0 Constant (const byte) current_bit#6 = 128 Constant (const byte) scroll_bit::b#0 = ' ' Constant (const byte) scroll_bit::b#1 = 128+' ' -Constant (const byte) scroll_hard::$0 = 40*0 -Constant (const byte) scroll_hard::$2 = 40*1 -Constant (const byte) scroll_hard::$4 = 40*2 -Constant (const byte) scroll_hard::$6 = 40*3 -Constant (const byte) scroll_hard::$8 = 40*4 -Constant (const byte) scroll_hard::$10 = 40*5 -Constant (const byte) scroll_hard::$12 = 40*6 -Constant (const byte) scroll_hard::$14 = 40*7 +Constant (const byte/signed byte/word/signed word) scroll_hard::$0 = 40*0 +Constant (const byte/signed byte/word/signed word) scroll_hard::$2 = 40*1 +Constant (const byte/signed byte/word/signed word) scroll_hard::$4 = 40*2 +Constant (const byte/signed byte/word/signed word) scroll_hard::$6 = 40*3 +Constant (const byte/word/signed word) scroll_hard::$8 = 40*4 +Constant (const byte/word/signed word) scroll_hard::$10 = 40*5 +Constant (const byte/word/signed word) scroll_hard::$12 = 40*6 +Constant (const word/signed word) scroll_hard::$14 = 40*7 Constant (const byte) scroll_hard::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -4338,10 +4338,10 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(const byte*) RASTER#0 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@2 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((byte*) BGCOL#4) ← ++ *((byte*) BGCOL#4) @@ -4358,7 +4358,7 @@ main::@return: scope:[main] from main::@8 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) @@ -4378,9 +4378,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -4390,16 +4390,16 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -4408,19 +4408,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#14) ← (byte) 55 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -4444,43 +4444,43 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$6 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$8 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$10 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$12 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$14 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$0 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$4 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$6 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$8 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$10 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$12 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const word/signed word) scroll_hard::$14 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -4491,7 +4491,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte*) fillscreen::cursor#2 ← phi( fillscreen/(byte*) fillscreen::cursor#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (byte*) fillscreen::cursor#0 + (word) 1000 + (byte*~) fillscreen::$0 ← (byte*) fillscreen::cursor#0 + (word/signed word) 1000 if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1 to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 @@ -4528,10 +4528,10 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(const byte*) RASTER#0 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@2 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((byte*) BGCOL#4) ← ++ *((byte*) BGCOL#4) @@ -4548,7 +4548,7 @@ main::@return: scope:[main] from main::@8 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) @@ -4568,9 +4568,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -4580,16 +4580,16 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -4598,19 +4598,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#14) ← (byte) 55 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -4634,43 +4634,43 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$6 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$8 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$10 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$12 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$14 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$0 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$4 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$6 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$8 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$10 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$12 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const word/signed word) scroll_hard::$14 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -4681,7 +4681,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) fillscreen::cursor#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - (byte*~) fillscreen::$0 ← (const byte*) fillscreen::cursor#0 + (word) 1000 + (byte*~) fillscreen::$0 ← (const byte*) fillscreen::cursor#0 + (word/signed word) 1000 if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1 to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 @@ -4718,10 +4718,10 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(const byte*) RASTER#0 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@2 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((byte*) BGCOL#4) ← ++ *((byte*) BGCOL#4) @@ -4738,7 +4738,7 @@ main::@return: scope:[main] from main::@8 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) @@ -4758,9 +4758,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -4770,16 +4770,16 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 50 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte/signed byte/word/signed word) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 39 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -4788,19 +4788,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#14) ← (byte) 55 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -4824,43 +4824,43 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$6 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$8 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$10 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$12 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$14 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$0 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$4 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$6 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$8 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$10 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$12 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const word/signed word) scroll_hard::$14 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -4924,10 +4924,10 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(const byte*) RASTER#0 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@2 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((byte*) BGCOL#4) ← ++ *((byte*) BGCOL#4) @@ -4944,7 +4944,7 @@ main::@return: scope:[main] from main::@8 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) @@ -4964,9 +4964,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -4976,16 +4976,16 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#14) ← (byte) 50 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 50 (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 40+(byte) 39 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -4994,19 +4994,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#14) ← (byte) 55 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -5030,43 +5030,43 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$6 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$8 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$10 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$12 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$14 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$0 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$4 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$6 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$8 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$10 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$12 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const word/signed word) scroll_hard::$14 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -5132,10 +5132,10 @@ main::@2: scope:[main] from main main::@2 main::@8 (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@8/(byte*) BGCOL#4 main/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@8/(byte*) RASTER#1 main/(const byte*) RASTER#0 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@2 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((byte*) BGCOL#4) ← ++ *((byte*) BGCOL#4) @@ -5150,7 +5150,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) @@ -5166,9 +5166,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -5178,16 +5178,16 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#14) ← (byte) 50 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 50 (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 40+(byte) 39 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -5196,19 +5196,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#14) ← (byte) 55 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -5230,43 +5230,43 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$6 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$8 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$10 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$12 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$14 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$0 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$4 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$6 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$8 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$10 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$12 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const word/signed word) scroll_hard::$14 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -5325,10 +5325,10 @@ main::@2: scope:[main] from main main::@2 main::@8 (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main/(const byte*) RASTER#0 ) - if(*((byte*) RASTER#1)!=(byte) 254) goto main::@2 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((byte*) RASTER#1)!=(byte) 255) goto main::@3 + if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((byte*) BGCOL#4) ← ++ *((byte*) BGCOL#4) @@ -5343,7 +5343,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) @@ -5359,9 +5359,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -5371,16 +5371,16 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((byte*) PROCPORT#14) ← (byte) 50 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 50 (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 40+(byte) 39 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -5389,19 +5389,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((byte*) PROCPORT#14) ← (byte) 55 + *((byte*) PROCPORT#14) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -5423,43 +5423,43 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$6 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$8 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$10 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$12 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$14 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$0 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$2 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$4 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#16 + (const byte/signed byte/word/signed word) scroll_hard::$6 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$8 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$10 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#16 + (const byte/word/signed word) scroll_hard::$12 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#16 + (const word/signed word) scroll_hard::$14 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -5499,10 +5499,10 @@ main::@2: scope:[main] from main main::@2 main::@8 (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -5517,7 +5517,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) @@ -5533,9 +5533,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -5545,16 +5545,16 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 (byte*~) scroll_bit::$7 ← (const byte*) SCREEN#0 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 40+(byte) 39 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -5563,19 +5563,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -5597,43 +5597,43 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte[]) scroll_hard::line0#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$0 - (byte[]) scroll_hard::line1#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$2 - (byte[]) scroll_hard::line2#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$4 - (byte[]) scroll_hard::line3#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$6 - (byte[]) scroll_hard::line4#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$8 - (byte[]) scroll_hard::line5#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$10 - (byte[]) scroll_hard::line6#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$12 - (byte[]) scroll_hard::line7#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$14 + (byte[]) scroll_hard::line0#0 ← (const byte*) SCREEN#0 + (const byte/signed byte/word/signed word) scroll_hard::$0 + (byte[]) scroll_hard::line1#0 ← (const byte*) SCREEN#0 + (const byte/signed byte/word/signed word) scroll_hard::$2 + (byte[]) scroll_hard::line2#0 ← (const byte*) SCREEN#0 + (const byte/signed byte/word/signed word) scroll_hard::$4 + (byte[]) scroll_hard::line3#0 ← (const byte*) SCREEN#0 + (const byte/signed byte/word/signed word) scroll_hard::$6 + (byte[]) scroll_hard::line4#0 ← (const byte*) SCREEN#0 + (const byte/word/signed word) scroll_hard::$8 + (byte[]) scroll_hard::line5#0 ← (const byte*) SCREEN#0 + (const byte/word/signed word) scroll_hard::$10 + (byte[]) scroll_hard::line6#0 ← (const byte*) SCREEN#0 + (const byte/word/signed word) scroll_hard::$12 + (byte[]) scroll_hard::line7#0 ← (const byte*) SCREEN#0 + (const word/signed word) scroll_hard::$14 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -5675,10 +5675,10 @@ main::@2: scope:[main] from main main::@2 main::@8 (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -5693,7 +5693,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) @@ -5709,9 +5709,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -5721,15 +5721,15 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 - (byte*) scroll_bit::sc#0 ← (const byte*) scroll_bit::$7 + (byte) 40+(byte) 39 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 + (byte*) scroll_bit::sc#0 ← (const byte*) scroll_bit::$7 + (byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -5738,19 +5738,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -5775,32 +5775,32 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -5834,10 +5834,10 @@ main::@2: scope:[main] from main main::@2 main::@8 (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -5852,7 +5852,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) @@ -5868,9 +5868,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -5880,14 +5880,14 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -5896,19 +5896,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -5933,32 +5933,32 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0 *idx (byte~) scroll_hard::$16 *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0 *idx (byte~) scroll_hard::$18 *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0 *idx (byte~) scroll_hard::$20 *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0 *idx (byte~) scroll_hard::$22 *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0 *idx (byte~) scroll_hard::$24 *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0 *idx (byte~) scroll_hard::$26 *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0 *idx (byte~) scroll_hard::$28 *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte) 1 + (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0 *idx (byte~) scroll_hard::$30 *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -6015,10 +6015,10 @@ main::@2: scope:[main] from main main::@2 main::@8 (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -6033,7 +6033,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) @@ -6049,9 +6049,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -6061,14 +6061,14 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -6077,19 +6077,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -6115,31 +6115,31 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) (byte~) scroll_hard::$16 ← (byte) scroll_hard::i#2 - (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte~) scroll_hard::$16 + (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte~) scroll_hard::$16 *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 (byte~) scroll_hard::$18 ← (byte) scroll_hard::i#2 - (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte~) scroll_hard::$18 + (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte~) scroll_hard::$18 *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 (byte~) scroll_hard::$20 ← (byte) scroll_hard::i#2 - (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte~) scroll_hard::$20 + (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte~) scroll_hard::$20 *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 (byte~) scroll_hard::$22 ← (byte) scroll_hard::i#2 - (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte~) scroll_hard::$22 + (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte~) scroll_hard::$22 *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 (byte~) scroll_hard::$24 ← (byte) scroll_hard::i#2 - (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte~) scroll_hard::$24 + (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte~) scroll_hard::$24 *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 (byte~) scroll_hard::$26 ← (byte) scroll_hard::i#2 - (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte~) scroll_hard::$26 + (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte~) scroll_hard::$26 *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 (byte~) scroll_hard::$28 ← (byte) scroll_hard::i#2 - (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte~) scroll_hard::$28 + (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte~) scroll_hard::$28 *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 (byte~) scroll_hard::$30 ← (byte) scroll_hard::i#2 - (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte~) scroll_hard::$30 + (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte~) scroll_hard::$30 *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -6185,10 +6185,10 @@ main::@2: scope:[main] from main main::@2 main::@8 (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -6203,7 +6203,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) @@ -6219,9 +6219,9 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) @@ -6231,14 +6231,14 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 @@ -6247,19 +6247,19 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -6284,24 +6284,24 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -6389,26 +6389,26 @@ Inlining constant with var siblings (const byte) current_bit#6 Inlining constant with var siblings (const byte) current_bit#6 Inlining constant with var siblings (const byte) current_bit#6 Inlining constant with different constant siblings (const byte) current_bit#6 -Constant inlined scroll_hard::$10 = (byte) 40*(byte) 5 -Constant inlined scroll_hard::$8 = (byte) 40*(byte) 4 -Constant inlined scroll#14 = (byte) 7 -Constant inlined scroll#15 = (byte) 7 -Constant inlined scroll_hard::$14 = (byte) 40*(byte) 7 -Constant inlined scroll_hard::$12 = (byte) 40*(byte) 6 -Constant inlined scroll_bit::$7 = (const byte*) SCREEN#0 -Constant inlined scroll_hard::$0 = (byte) 40*(byte) 0 -Constant inlined scroll_bit::r#0 = (byte) 0 -Constant inlined scroll_hard::$2 = (byte) 40*(byte) 1 -Constant inlined scroll_bit::b#1 = (byte) 128+(byte) ' ' -Constant inlined current_bit#23 = (byte) 1 +Constant inlined scroll_hard::$4 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 +Constant inlined scroll_hard::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined scroll_hard::$6 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 +Constant inlined scroll_hard::$0 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 +Constant inlined scroll_hard::$2 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 Constant inlined scroll_bit::b#0 = (byte) ' ' -Constant inlined fillscreen::$0 = (const byte*) SCREEN#0+(word) 1000 -Constant inlined scroll_hard::$4 = (byte) 40*(byte) 2 +Constant inlined scroll_bit::$7 = (const byte*) SCREEN#0 +Constant inlined fillscreen::$0 = (const byte*) SCREEN#0+(word/signed word) 1000 +Constant inlined scroll_bit::b#1 = (byte/word/signed word) 128+(byte) ' ' +Constant inlined scroll_hard::$12 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 +Constant inlined scroll_hard::$14 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 +Constant inlined current_bit#6 = (byte/word/signed word) 128 Constant inlined fillscreen::cursor#0 = (const byte*) SCREEN#0 -Constant inlined scroll_hard::$6 = (byte) 40*(byte) 3 -Constant inlined scroll_bit::sc#0 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 -Constant inlined scroll_hard::i#0 = (byte) 0 -Constant inlined current_bit#6 = (byte) 128 +Constant inlined scroll_bit::r#0 = (byte/signed byte/word/signed word) 0 +Constant inlined current_bit#23 = (byte/signed byte/word/signed word) 1 +Constant inlined scroll_bit::sc#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 +Constant inlined scroll_hard::$8 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 +Constant inlined scroll#15 = (byte/signed byte/word/signed word) 7 +Constant inlined scroll_hard::$10 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 +Constant inlined scroll#14 = (byte/signed byte/word/signed word) 7 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -6419,12 +6419,12 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@8 (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(byte) 1 ) - (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(byte) 7 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 + (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(byte/signed byte/word/signed word) 1 ) + (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(byte/signed byte/word/signed word) 7 ) + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -6439,13 +6439,13 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) - (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte) 7 ) + (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte/signed byte/word/signed word) 7 ) *((const byte*) SCROLL#0) ← (byte) scroll#0 to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft @@ -6455,47 +6455,47 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte/word/signed word) 128 ) (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) call scroll_hard param-assignment to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) 0 ) + (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 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte/signed byte/word/signed word) 0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) + (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte/word/signed word) 128+(byte) ' ' ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -6519,25 +6519,25 @@ next_char::@return: scope:[next_char] from next_char::@1 scroll_hard: scope:[scroll_hard] from scroll_bit::@1 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte/signed byte/word/signed word) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) + (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -6548,7 +6548,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 + if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 return @@ -6567,11 +6567,11 @@ FINAL SYMBOL TABLE (byte*) CHARGEN (const byte*) CHARGEN#0 = (word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 = (byte) 1 +(const byte*) PROCPORT#0 = (byte/signed byte/word/signed word) 1 (byte*) RASTER (const byte*) RASTER#0 = (word) 53266 (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte*) SCROLL (const byte*) SCROLL#0 = (word) 53270 (byte*) TEXT @@ -6593,7 +6593,7 @@ FINAL SYMBOL TABLE (byte*) fillscreen::cursor#1 (byte*) fillscreen::cursor#2 (byte) fillscreen::fill -(const byte) fillscreen::fill#0 = (byte) 32 +(const byte) fillscreen::fill#0 = (byte/signed byte/word/signed word) 32 (byte*) fillscreen::screen (void()) main() (label) main::@2 @@ -6661,21 +6661,21 @@ FINAL SYMBOL TABLE (byte) scroll_hard::i#1 (byte) scroll_hard::i#2 (byte[]) scroll_hard::line0 -(const byte[]) scroll_hard::line0#0 = (const byte*) SCREEN#0+(byte) 40*(byte) 0 +(const byte[]) scroll_hard::line0#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 (byte[]) scroll_hard::line1 -(const byte[]) scroll_hard::line1#0 = (const byte*) SCREEN#0+(byte) 40*(byte) 1 +(const byte[]) scroll_hard::line1#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 (byte[]) scroll_hard::line2 -(const byte[]) scroll_hard::line2#0 = (const byte*) SCREEN#0+(byte) 40*(byte) 2 +(const byte[]) scroll_hard::line2#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 (byte[]) scroll_hard::line3 -(const byte[]) scroll_hard::line3#0 = (const byte*) SCREEN#0+(byte) 40*(byte) 3 +(const byte[]) scroll_hard::line3#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 (byte[]) scroll_hard::line4 -(const byte[]) scroll_hard::line4#0 = (const byte*) SCREEN#0+(byte) 40*(byte) 4 +(const byte[]) scroll_hard::line4#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 (byte[]) scroll_hard::line5 -(const byte[]) scroll_hard::line5#0 = (const byte*) SCREEN#0+(byte) 40*(byte) 5 +(const byte[]) scroll_hard::line5#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 (byte[]) scroll_hard::line6 -(const byte[]) scroll_hard::line6#0 = (const byte*) SCREEN#0+(byte) 40*(byte) 6 +(const byte[]) scroll_hard::line6#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 (byte[]) scroll_hard::line7 -(const byte[]) scroll_hard::line7#0 = (const byte*) SCREEN#0+(byte) 40*(byte) 7 +(const byte[]) scroll_hard::line7#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 (void()) scroll_soft() (label) scroll_soft::@1 (label) scroll_soft::@2 @@ -6703,12 +6703,12 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@9 (byte*) current_chargen#27 ← phi( main::@9/(byte*~) current_chargen#32 main/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@9/(byte*~) nxt#39 main/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@9/(byte~) current_bit#33 main/(byte) 1 ) - (byte) scroll#18 ← phi( main::@9/(byte~) scroll#23 main/(byte) 7 ) - if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 + (byte) current_bit#29 ← phi( main::@9/(byte~) current_bit#33 main/(byte/signed byte/word/signed word) 1 ) + (byte) scroll#18 ← phi( main::@9/(byte~) scroll#23 main/(byte/signed byte/word/signed word) 7 ) + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 + if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) @@ -6729,7 +6729,7 @@ main::@9: scope:[main] from main::@8 to:main::@2 scroll_soft: scope:[scroll_soft] from main::@5 (byte) scroll#3 ← -- (byte) scroll#18 - if((byte) scroll#3!=(byte) 255) goto scroll_soft::@4 + if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@4 to:scroll_soft::@2 scroll_soft::@2: scope:[scroll_soft] from scroll_soft call scroll_bit param-assignment @@ -6741,7 +6741,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft::@2 scroll_soft::@4 (byte*) current_chargen#0 ← phi( scroll_soft::@4/(byte*~) current_chargen#33 scroll_soft::@2/(byte*~) current_chargen#34 ) (byte*) nxt#0 ← phi( scroll_soft::@4/(byte*~) nxt#40 scroll_soft::@2/(byte*~) nxt#41 ) (byte) current_bit#0 ← phi( scroll_soft::@4/(byte~) current_bit#34 scroll_soft::@2/(byte~) current_bit#35 ) - (byte) scroll#0 ← phi( scroll_soft::@4/(byte~) scroll#24 scroll_soft::@2/(byte) 7 ) + (byte) scroll#0 ← phi( scroll_soft::@4/(byte~) scroll#24 scroll_soft::@2/(byte/signed byte/word/signed word) 7 ) *((const byte*) SCROLL#0) ← (byte) scroll#0 to:scroll_soft::@return scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @@ -6754,16 +6754,16 @@ scroll_soft::@4: scope:[scroll_soft] from scroll_soft (byte*~) current_chargen#33 ← (byte*) current_chargen#27 to:scroll_soft::@1 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 (byte) current_bit#5 ← (byte~) scroll_bit::$0 - if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@9 + if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@9 to:scroll_bit::@4 scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte*~) current_chargen#36 ← (byte*) current_chargen#5 @@ -6771,32 +6771,32 @@ scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 to:scroll_bit::@1 scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@8 scroll_bit::@9 (byte*) nxt#36 ← phi( scroll_bit::@9/(byte*~) nxt#42 scroll_bit::@8/(byte*~) nxt#43 ) - (byte) current_bit#21 ← phi( scroll_bit::@9/(byte~) current_bit#36 scroll_bit::@8/(byte) 128 ) + (byte) current_bit#21 ← phi( scroll_bit::@9/(byte~) current_bit#36 scroll_bit::@8/(byte/word/signed word) 128 ) (byte*) current_chargen#19 ← phi( scroll_bit::@9/(byte*~) current_chargen#35 scroll_bit::@8/(byte*~) current_chargen#36 ) call scroll_hard param-assignment to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - *((const byte*) PROCPORT#0) ← (byte) 50 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 to:scroll_bit::@2 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@10 scroll_bit::@7 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@10/(byte*~) scroll_bit::sc#5 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@10/(byte~) scroll_bit::r#5 scroll_bit::@7/(byte) 0 ) + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@10/(byte*~) scroll_bit::sc#5 scroll_bit::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@10/(byte~) scroll_bit::r#5 scroll_bit::@7/(byte/signed byte/word/signed word) 0 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 + if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) + (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte/word/signed word) 128+(byte) ' ' ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@10 + if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@10 to:scroll_bit::@6 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - *((const byte*) PROCPORT#0) ← (byte) 55 + *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -6814,25 +6814,25 @@ scroll_bit::@9: scope:[scroll_bit] from scroll_bit scroll_hard: scope:[scroll_hard] from scroll_bit::@1 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@3 - (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@3/(byte~) scroll_hard::i#3 ) - (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte/signed byte/word/signed word) 0 scroll_hard::@3/(byte~) scroll_hard::i#3 ) + (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 - (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 - (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 - (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 - (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 - (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 - (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 - (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 + (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@3 + if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@3 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -6866,7 +6866,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@3 (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@3/(byte*~) fillscreen::cursor#3 ) *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 - if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@3 + if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@3 to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 return @@ -6916,12 +6916,12 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@9 [3] (byte*) current_chargen#27 ← phi( main::@9/(byte*~) current_chargen#32 main/(const byte*) CHARGEN#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] [3] (byte*) nxt#31 ← phi( main::@9/(byte*~) nxt#39 main/(const byte*) TEXT#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] - [3] (byte) current_bit#29 ← phi( main::@9/(byte~) current_bit#33 main/(byte) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] - [3] (byte) scroll#18 ← phi( main::@9/(byte~) scroll#23 main/(byte) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] - [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] + [3] (byte) current_bit#29 ← phi( main::@9/(byte~) current_bit#33 main/(byte/signed byte/word/signed word) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] + [3] (byte) scroll#18 ← phi( main::@9/(byte~) scroll#23 main/(byte/signed byte/word/signed word) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] + [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] + [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] to:main::@5 main::@5: scope:[main] from main::@3 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] @@ -6942,7 +6942,7 @@ main::@9: scope:[main] from main::@8 to:main::@2 scroll_soft: scope:[scroll_soft] from main::@5 [15] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] - [16] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@4 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] + [16] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@4 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] to:scroll_soft::@2 scroll_soft::@2: scope:[scroll_soft] from scroll_soft [17] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] @@ -6954,7 +6954,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft::@2 scroll_soft::@4 [21] (byte*) current_chargen#0 ← phi( scroll_soft::@4/(byte*~) current_chargen#33 scroll_soft::@2/(byte*~) current_chargen#34 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] [21] (byte*) nxt#0 ← phi( scroll_soft::@4/(byte*~) nxt#40 scroll_soft::@2/(byte*~) nxt#41 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] [21] (byte) current_bit#0 ← phi( scroll_soft::@4/(byte~) current_bit#34 scroll_soft::@2/(byte~) current_bit#35 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] - [21] (byte) scroll#0 ← phi( scroll_soft::@4/(byte~) scroll#24 scroll_soft::@2/(byte) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] + [21] (byte) scroll#0 ← phi( scroll_soft::@4/(byte~) scroll#24 scroll_soft::@2/(byte/signed byte/word/signed word) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] [22] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] to:scroll_soft::@return scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @@ -6967,16 +6967,16 @@ scroll_soft::@4: scope:[scroll_soft] from scroll_soft [27] (byte*~) current_chargen#33 ← (byte*) current_chargen#27 [ scroll#24 current_bit#34 nxt#40 current_chargen#33 ] to:scroll_soft::@1 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - [28] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] + [28] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] [29] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] - [30] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@9 [ nxt#31 current_chargen#27 current_bit#5 ] + [30] if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@9 [ nxt#31 current_chargen#27 current_bit#5 ] to:scroll_bit::@4 scroll_bit::@4: scope:[scroll_bit] from scroll_bit [31] call next_char param-assignment [ next_char::c#2 nxt#15 ] to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 [32] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] - [33] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] + [33] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] [34] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] [35] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] [36] (byte*~) current_chargen#36 ← (byte*) current_chargen#5 [ current_chargen#36 nxt#15 ] @@ -6984,32 +6984,32 @@ scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 to:scroll_bit::@1 scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@8 scroll_bit::@9 [38] (byte*) nxt#36 ← phi( scroll_bit::@9/(byte*~) nxt#42 scroll_bit::@8/(byte*~) nxt#43 ) [ current_bit#21 nxt#36 current_chargen#19 ] - [38] (byte) current_bit#21 ← phi( scroll_bit::@9/(byte~) current_bit#36 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [38] (byte) current_bit#21 ← phi( scroll_bit::@9/(byte~) current_bit#36 scroll_bit::@8/(byte/word/signed word) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] [38] (byte*) current_chargen#19 ← phi( scroll_bit::@9/(byte*~) current_chargen#35 scroll_bit::@8/(byte*~) current_chargen#36 ) [ current_bit#21 nxt#36 current_chargen#19 ] [39] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - [41] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] + [41] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] to:scroll_bit::@2 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@10 scroll_bit::@7 - [42] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@10/(byte*~) scroll_bit::sc#5 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] - [42] (byte) scroll_bit::r#2 ← phi( scroll_bit::@10/(byte~) scroll_bit::r#5 scroll_bit::@7/(byte) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] + [42] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@10/(byte*~) scroll_bit::sc#5 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 ] + [42] (byte) scroll_bit::r#2 ← phi( scroll_bit::@10/(byte~) scroll_bit::r#5 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 ] [43] (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 ] [44] (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 ] - [45] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] + [45] 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 ] to:scroll_bit::@5 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - [46] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] + [46] (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 ] [47] *((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 ] - [48] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] + [48] (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 ] [49] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::sc#1 scroll_bit::r#1 ] - [50] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@10 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::sc#1 scroll_bit::r#1 ] + [50] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@10 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::sc#1 scroll_bit::r#1 ] to:scroll_bit::@6 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - [51] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] + [51] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -7028,25 +7028,25 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 [59] phi() [ ] to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@3 - [60] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@3/(byte~) scroll_hard::i#3 ) [ scroll_hard::i#2 ] - [61] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] + [60] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte/signed byte/word/signed word) 0 scroll_hard::@3/(byte~) scroll_hard::i#3 ) [ scroll_hard::i#2 ] + [61] (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 ] [62] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] - [63] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] + [63] (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 ] [64] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] - [65] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] + [65] (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 ] [66] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] - [67] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] + [67] (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 ] [68] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] - [69] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] + [69] (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 ] [70] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] - [71] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] + [71] (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 ] [72] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] - [73] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] + [73] (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 ] [74] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] - [75] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] + [75] (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 ] [76] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] [77] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] - [78] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@3 [ scroll_hard::i#1 ] + [78] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@3 [ scroll_hard::i#1 ] to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 [79] return [ ] @@ -7081,7 +7081,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@3 [91] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@3/(byte*~) fillscreen::cursor#3 ) [ fillscreen::cursor#2 ] [92] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] [93] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] - [94] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@3 [ fillscreen::cursor#1 ] + [94] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@3 [ fillscreen::cursor#1 ] to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 [95] return [ ] @@ -7158,12 +7158,12 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@8 [3] (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] [3] (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] - [3] (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(byte) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] - [3] (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(byte) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] - [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] + [3] (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(byte/signed byte/word/signed word) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] + [3] (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(byte/signed byte/word/signed word) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] + [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] + [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] to:main::@5 main::@5: scope:[main] from main::@3 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] @@ -7178,7 +7178,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] - [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] + [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] to:scroll_soft::@2 scroll_soft::@2: scope:[scroll_soft] from scroll_soft [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] @@ -7187,54 +7187,54 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 [14] (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] [14] (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] [14] (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] - [14] (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] + [14] (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte/signed byte/word/signed word) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] to:scroll_soft::@return scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] + [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] - [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] + [19] if((byte) current_bit#5!=(byte/signed byte/word/signed word) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] to:scroll_bit::@4 scroll_bit::@4: scope:[scroll_bit] from scroll_bit [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] - [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] + [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] to:scroll_bit::@1 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 [25] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#36 current_chargen#19 ] - [25] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [25] (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 ] [25] (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 ] [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] + [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ 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 - [29] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] - [29] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] + [29] (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 ] + [29] (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 ] [30] (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 ] [31] (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 ] - [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] + [32] 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 ] to:scroll_bit::@5 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - [33] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] + [33] (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 ] [34] *((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 ] - [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] + [35] (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 ] [36] (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 ] - [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] + [37] 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 ] to:scroll_bit::@6 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] + [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -7244,25 +7244,25 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 [41] phi() [ ] to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - [42] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] - [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] + [42] (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 ] + [43] (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 ] [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] - [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] + [45] (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 ] [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] - [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] + [47] (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 ] [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] - [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] + [49] (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 ] [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] - [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] + [51] (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 ] [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] - [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] + [53] (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 ] [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] - [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] + [55] (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 ] [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] - [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] + [57] (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 ] [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] - [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] + [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 [61] return [ ] @@ -7289,7 +7289,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 [69] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] - [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] + [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 [73] return [ ] @@ -7309,12 +7309,12 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@8 [3] (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) [3] (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) - [3] (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(byte) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) - [3] (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(byte) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) - [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [3] (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(byte/signed byte/word/signed word) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [3] (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(byte/signed byte/word/signed word) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) to:main::@5 main::@5: scope:[main] from main::@3 [6] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) @@ -7329,7 +7329,7 @@ main::@return: scope:[main] from main::@8 to:@return scroll_soft: scope:[scroll_soft] from main::@5 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) - [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) + [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) to:scroll_soft::@2 scroll_soft::@2: scope:[scroll_soft] from scroll_soft [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) @@ -7338,54 +7338,54 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 [14] (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [14] (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [14] (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) - [14] (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + [14] (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte/signed byte/word/signed word) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) to:scroll_soft::@return scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) + [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) - [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) + [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) to:scroll_bit::@4 scroll_bit::@4: scope:[scroll_bit] from scroll_bit [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) - [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) + [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) to:scroll_bit::@1 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 [25] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) - [25] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [25] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [25] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_bit::@7 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ 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 - [29] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [29] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [29] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [29] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) [30] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) - [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [32] 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:0::scroll_soft:7::scroll_bit:13 [ 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 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - [33] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ) + [33] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ) [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) + [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) - [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) + [37] 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:0::scroll_soft:7::scroll_bit:13 [ 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 - [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 @@ -7395,25 +7395,25 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 [41] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - [42] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) + [42] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) + [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) + [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) + [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) + [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) + [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) + [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) + [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) - [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) + [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ 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 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) @@ -7440,7 +7440,7 @@ fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 [69] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) - [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 [73] return [ ] ( main:0::fillscreen:2 [ ] ) @@ -7448,38 +7448,38 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 DOMINATORS @begin dominated by @begin -@6 dominated by @6 @begin -@end dominated by @6 @begin @end -main dominated by @6 @begin main -main::@2 dominated by @6 @begin main::@2 main -main::@3 dominated by @6 @begin main::@2 main::@3 main -main::@5 dominated by @6 @begin main::@2 main::@3 main::@5 main -main::@8 dominated by @6 @begin main::@2 main::@3 main::@5 main::@8 main -main::@return dominated by @6 @begin main::@2 main::@3 main::@5 main::@8 main main::@return -scroll_soft dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 main -scroll_soft::@2 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 main -scroll_soft::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@1 main -scroll_soft::@return dominated by @6 @begin scroll_soft main::@2 scroll_soft::@return main::@3 main::@5 scroll_soft::@1 main -scroll_bit dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit main -scroll_bit::@4 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@4 main -scroll_bit::@8 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@4 main scroll_bit::@8 -scroll_bit::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@1 main -scroll_bit::@7 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@1 main scroll_bit::@7 -scroll_bit::@2 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@1 scroll_bit::@2 main scroll_bit::@7 -scroll_bit::@5 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@1 main scroll_bit::@2 scroll_bit::@7 scroll_bit::@5 -scroll_bit::@3 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@3 scroll_bit::@1 main scroll_bit::@2 scroll_bit::@7 -scroll_bit::@6 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@3 scroll_bit::@1 main scroll_bit::@2 scroll_bit::@7 scroll_bit::@6 -scroll_bit::@return dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@3 scroll_bit::@1 main scroll_bit::@2 scroll_bit::@7 scroll_bit::@6 scroll_bit::@return -scroll_hard dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_hard scroll_bit::@1 main -scroll_hard::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_hard scroll_hard::@1 scroll_bit::@1 main -scroll_hard::@return dominated by @6 @begin scroll_soft main::@2 scroll_hard::@return main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_hard scroll_hard::@1 scroll_bit::@1 main -next_char dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@4 main next_char -next_char::@2 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit next_char::@2 scroll_bit::@4 main next_char -next_char::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit next_char::@1 scroll_bit::@4 main next_char -next_char::@return dominated by next_char::@return @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit next_char::@1 scroll_bit::@4 main next_char -fillscreen dominated by @6 @begin fillscreen main -fillscreen::@1 dominated by @6 @begin fillscreen fillscreen::@1 main -fillscreen::@return dominated by @6 @begin fillscreen::@return fillscreen fillscreen::@1 main +@6 dominated by @begin @6 +@end dominated by @end @begin @6 +main dominated by main @begin @6 +main::@2 dominated by main main::@2 @begin @6 +main::@3 dominated by main main::@2 main::@3 @begin @6 +main::@5 dominated by main main::@2 main::@5 main::@3 @begin @6 +main::@8 dominated by main::@8 main main::@2 main::@5 main::@3 @begin @6 +main::@return dominated by main::@return main::@8 main main::@2 main::@5 main::@3 @begin @6 +scroll_soft dominated by scroll_soft main main::@2 main::@5 main::@3 @begin @6 +scroll_soft::@2 dominated by scroll_soft main scroll_soft::@2 main::@2 main::@5 main::@3 @begin @6 +scroll_soft::@1 dominated by scroll_soft main scroll_soft::@1 main::@2 main::@5 main::@3 @begin @6 +scroll_soft::@return dominated by scroll_soft main scroll_soft::@1 main::@2 main::@5 scroll_soft::@return main::@3 @begin @6 +scroll_bit dominated by scroll_soft main scroll_soft::@2 main::@2 main::@5 main::@3 @begin scroll_bit @6 +scroll_bit::@4 dominated by scroll_bit::@4 scroll_soft main scroll_soft::@2 main::@2 main::@5 main::@3 @begin scroll_bit @6 +scroll_bit::@8 dominated by scroll_bit::@4 scroll_soft main scroll_soft::@2 main::@2 scroll_bit::@8 main::@5 main::@3 @begin scroll_bit @6 +scroll_bit::@1 dominated by scroll_bit::@1 scroll_soft main scroll_soft::@2 main::@2 main::@5 main::@3 @begin scroll_bit @6 +scroll_bit::@7 dominated by scroll_bit::@1 scroll_soft main scroll_soft::@2 main::@2 scroll_bit::@7 main::@5 main::@3 @begin scroll_bit @6 +scroll_bit::@2 dominated by scroll_bit::@2 scroll_bit::@1 scroll_soft main scroll_soft::@2 main::@2 scroll_bit::@7 main::@5 main::@3 @begin scroll_bit @6 +scroll_bit::@5 dominated by scroll_bit::@2 scroll_bit::@1 scroll_soft main scroll_soft::@2 main::@2 scroll_bit::@5 scroll_bit::@7 main::@5 main::@3 @begin scroll_bit @6 +scroll_bit::@3 dominated by scroll_bit::@2 scroll_bit::@1 scroll_soft scroll_bit::@3 main scroll_soft::@2 main::@2 scroll_bit::@7 main::@5 main::@3 @begin scroll_bit @6 +scroll_bit::@6 dominated by scroll_bit::@2 scroll_bit::@1 scroll_soft scroll_bit::@3 main scroll_soft::@2 scroll_bit::@6 main::@2 scroll_bit::@7 main::@5 main::@3 @begin scroll_bit @6 +scroll_bit::@return dominated by scroll_bit::@2 scroll_bit::@1 scroll_soft scroll_bit::@3 main scroll_soft::@2 scroll_bit::@6 main::@2 scroll_bit::@7 main::@5 main::@3 @begin scroll_bit scroll_bit::@return @6 +scroll_hard dominated by scroll_bit::@1 scroll_soft main scroll_hard scroll_soft::@2 main::@2 main::@5 main::@3 @begin scroll_bit @6 +scroll_hard::@1 dominated by scroll_bit::@1 scroll_soft main scroll_hard scroll_soft::@2 main::@2 main::@5 main::@3 @begin scroll_bit scroll_hard::@1 @6 +scroll_hard::@return dominated by scroll_bit::@1 scroll_soft main scroll_hard scroll_soft::@2 main::@2 main::@5 main::@3 scroll_hard::@return @begin scroll_bit scroll_hard::@1 @6 +next_char dominated by scroll_bit::@4 scroll_soft main scroll_soft::@2 main::@2 main::@5 main::@3 @begin scroll_bit next_char @6 +next_char::@2 dominated by scroll_bit::@4 scroll_soft main next_char::@2 scroll_soft::@2 main::@2 main::@5 main::@3 @begin scroll_bit next_char @6 +next_char::@1 dominated by scroll_bit::@4 scroll_soft main next_char::@1 scroll_soft::@2 main::@2 main::@5 main::@3 @begin scroll_bit next_char @6 +next_char::@return dominated by scroll_bit::@4 scroll_soft main next_char::@1 scroll_soft::@2 main::@2 main::@5 main::@3 @begin scroll_bit next_char next_char::@return @6 +fillscreen dominated by main @begin fillscreen @6 +fillscreen::@1 dominated by main @begin fillscreen @6 fillscreen::@1 +fillscreen::@return dominated by main @begin fillscreen @6 fillscreen::@1 fillscreen::@return Found back edge: Loop head: main::@2 tails: main::@2 blocks: null Found back edge: Loop head: main::@3 tails: main::@3 blocks: null @@ -7724,10 +7724,10 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG13 [3] phi (byte) current_bit#29 = (byte) 1 [phi:main->main::@2#2] -- zpby1=coby1 + //SEG13 [3] phi (byte) current_bit#29 = (byte/signed byte/word/signed word) 1 [phi:main->main::@2#2] -- zpby1=coby1 lda #1 sta current_bit - //SEG14 [3] phi (byte) scroll#18 = (byte) 7 [phi:main->main::@2#3] -- zpby1=coby1 + //SEG14 [3] phi (byte) scroll#18 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#3] -- zpby1=coby1 lda #7 sta scroll jmp b2 @@ -7743,14 +7743,14 @@ main: { jmp b2 //SEG21 main::@2 b2: - //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 jmp b3 //SEG23 main::@3 b3: - //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -7778,7 +7778,7 @@ main: { scroll_soft: { //SEG34 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- zpby1=_dec_zpby1 dec scroll - //SEG35 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- zpby1_neq_coby1_then_la1 + //SEG35 [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- zpby1_neq_coby1_then_la1 lda scroll cmp #$ff bne b1_from_scroll_soft @@ -7792,7 +7792,7 @@ scroll_soft: { //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- zpby1=coby1 + //SEG42 [14] phi (byte) scroll#0 = (byte/signed byte/word/signed word) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- zpby1=coby1 lda #7 sta scroll jmp b1 @@ -7825,14 +7825,14 @@ scroll_bit: { .label sc = 7 .label r = 6 .label b = 9 - //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- zpby1=zpby2_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- zpby1=zpby2_ror_1 lda current_bit lsr sta _0 //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=zpby2 lda _0 sta current_bit - //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 lda current_bit bne b1_from_scroll_bit jmp b4 @@ -7848,7 +7848,7 @@ scroll_bit: { sta c lda #0 sta c+1 - //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo2_rol_3 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo2_rol_3 lda _4 asl sta c @@ -7883,7 +7883,7 @@ scroll_bit: { //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [25] phi (byte) current_bit#21 = (byte/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy @@ -7905,17 +7905,17 @@ scroll_bit: { b7: //SEG75 asm { sei } sei - //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] b2_from_b7: - //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- zpby1=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- zpby1=coby1 lda #0 sta r jmp b2 @@ -7934,7 +7934,7 @@ scroll_bit: { lda bits and current_bit sta _10 - //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- zpby1_eq_0_then_la1 + //SEG86 [32] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- zpby1_eq_0_then_la1 lda _10 beq b3_from_b2 jmp b5 @@ -7942,7 +7942,7 @@ scroll_bit: { b5: //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] b3_from_b5: - //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- zpby1=coby1 + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- zpby1=coby1 lda #$80+' ' sta b jmp b3 @@ -7958,7 +7958,7 @@ scroll_bit: { ldy #0 lda b sta (sc),y - //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -7968,14 +7968,14 @@ scroll_bit: { !: //SEG95 [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- zpby1=_inc_zpby1 inc r - //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG96 [37] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- zpby1_neq_coby1_then_la1 lda r cmp #8 bne b2_from_b3 jmp b6 //SEG97 scroll_bit::@6 b6: - //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG99 asm { cli } @@ -8007,7 +8007,7 @@ scroll_hard: { .label i = $a //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- zpby1=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -8017,7 +8017,7 @@ scroll_hard: { jmp b1 //SEG107 scroll_hard::@1 b1: - //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG108 [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line0+1,x sta _17 @@ -8025,7 +8025,7 @@ scroll_hard: { lda _17 ldx i sta line0,x - //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG110 [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line1+1,x sta _19 @@ -8033,7 +8033,7 @@ scroll_hard: { lda _19 ldx i sta line1,x - //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG112 [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line2+1,x sta _21 @@ -8041,7 +8041,7 @@ scroll_hard: { lda _21 ldx i sta line2,x - //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG114 [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line3+1,x sta _23 @@ -8049,7 +8049,7 @@ scroll_hard: { lda _23 ldx i sta line3,x - //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG116 [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line4+1,x sta _25 @@ -8057,7 +8057,7 @@ scroll_hard: { lda _25 ldx i sta line4,x - //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG118 [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line5+1,x sta _27 @@ -8065,7 +8065,7 @@ scroll_hard: { lda _27 ldx i sta line5,x - //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG120 [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line6+1,x sta _29 @@ -8073,7 +8073,7 @@ scroll_hard: { lda _29 ldx i sta line6,x - //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG122 [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line7+1,x sta _31 @@ -8083,7 +8083,7 @@ scroll_hard: { sta line7,x //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$27 bne b1_from_b1 @@ -8164,7 +8164,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -8181,41 +8181,41 @@ fillscreen: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a +Statement [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ scroll#18 scroll#0 scroll#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] -Statement [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Statement [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) always clobbers reg byte a -Statement [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) always clobbers reg byte a +Statement [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a +Statement [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) always clobbers reg byte a +Statement [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) always clobbers reg byte a Statement [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) always clobbers reg byte a Statement [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) always clobbers reg byte a -Statement [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a +Statement [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a Statement [30] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] Statement [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) always clobbers reg byte a Statement [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] -Statement [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a -Statement [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a +Statement [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a +Statement [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a Statement [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y Statement [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a -Statement [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Statement [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Statement [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) always clobbers reg byte a -Statement [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) always clobbers reg byte a +Statement [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a +Statement [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a +Statement [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) always clobbers reg byte a +Statement [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) always clobbers reg byte a Statement [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) always clobbers reg byte a Statement [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) always clobbers reg byte a -Statement [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a +Statement [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a Statement [30] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a reg byte y Statement [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) always clobbers reg byte a Statement [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y -Statement [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a -Statement [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a +Statement [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a +Statement [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a Statement [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y Statement [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ scroll#18 scroll#0 scroll#3 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] : zp ZP_PTR_BYTE:4 , @@ -8251,20 +8251,20 @@ Uplift Scope [main] Uplift Scope [scroll_soft] Uplift attempts [scroll_hard] 10000/262144 (limiting to 10000) -Uplifting [scroll_hard] best 9555 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] reg byte a [ scroll_hard::$17 ] reg byte a [ scroll_hard::$19 ] reg byte a [ scroll_hard::$21 ] reg byte a [ scroll_hard::$23 ] reg byte a [ scroll_hard::$25 ] reg byte a [ scroll_hard::$27 ] zp ZP_BYTE:31 [ scroll_hard::$29 ] zp ZP_BYTE:32 [ scroll_hard::$31 ] +Uplifting [scroll_hard] best 9818 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] reg byte a [ scroll_hard::$17 ] reg byte a [ scroll_hard::$19 ] reg byte a [ scroll_hard::$21 ] reg byte a [ scroll_hard::$23 ] reg byte a [ scroll_hard::$25 ] reg byte a [ scroll_hard::$27 ] zp ZP_BYTE:31 [ scroll_hard::$29 ] zp ZP_BYTE:32 [ scroll_hard::$31 ] Limited combination testing to 10000 combinations of 262144 possible. -Uplifting [scroll_bit] best 9299 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$10 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] reg byte a [ scroll_bit::$0 ] zp ZP_WORD:17 [ scroll_bit::c#0 ] zp ZP_WORD:19 [ scroll_bit::$4 ] zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] -Uplifting [] best 8987 combination zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] reg byte x [ scroll#18 scroll#0 scroll#3 ] -Uplifting [fillscreen] best 8987 combination zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Uplifting [next_char] best 8975 combination reg byte a [ next_char::c#2 next_char::c#0 next_char::c#1 ] -Uplifting [main] best 8975 combination -Uplifting [scroll_soft] best 8975 combination +Uplifting [scroll_bit] best 9582 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$10 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] reg byte a [ scroll_bit::$0 ] zp ZP_WORD:17 [ scroll_bit::c#0 ] zp ZP_WORD:19 [ scroll_bit::$4 ] zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] +Uplifting [] best 9270 combination zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] reg byte x [ scroll#18 scroll#0 scroll#3 ] +Uplifting [fillscreen] best 9270 combination zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] +Uplifting [next_char] best 9258 combination reg byte a [ next_char::c#2 next_char::c#0 next_char::c#1 ] +Uplifting [main] best 9258 combination +Uplifting [scroll_soft] best 9258 combination Attempting to uplift remaining variables inzp ZP_BYTE:31 [ scroll_hard::$29 ] -Uplifting [scroll_hard] best 8915 combination reg byte a [ scroll_hard::$29 ] +Uplifting [scroll_hard] best 9198 combination reg byte a [ scroll_hard::$29 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ scroll_hard::$31 ] -Uplifting [scroll_hard] best 8855 combination reg byte a [ scroll_hard::$31 ] +Uplifting [scroll_hard] best 9138 combination reg byte a [ scroll_hard::$31 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] -Uplifting [] best 8855 combination zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] +Uplifting [] best 9138 combination zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] Coalescing zero page register [ zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] ] with [ zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] Coalescing zero page register [ zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 ] ] with [ zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] ] Coalescing zero page register [ zp ZP_WORD:17 [ scroll_bit::c#0 ] ] with [ zp ZP_WORD:19 [ scroll_bit::$4 ] ] @@ -8344,10 +8344,10 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG13 [3] phi (byte) current_bit#29 = (byte) 1 [phi:main->main::@2#2] -- zpby1=coby1 + //SEG13 [3] phi (byte) current_bit#29 = (byte/signed byte/word/signed word) 1 [phi:main->main::@2#2] -- zpby1=coby1 lda #1 sta current_bit - //SEG14 [3] phi (byte) scroll#18 = (byte) 7 [phi:main->main::@2#3] -- xby=coby1 + //SEG14 [3] phi (byte) scroll#18 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#3] -- xby=coby1 ldx #7 jmp b2 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -8361,13 +8361,13 @@ main: { //SEG20 [3] phi (byte) scroll#18 = (byte) scroll#0 [phi:main::@8->main::@2#3] -- register_copy //SEG21 main::@2 b2: - //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 //SEG23 main::@3 b3: - //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -8392,7 +8392,7 @@ main: { scroll_soft: { //SEG34 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby=_dec_xby dex - //SEG35 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 + //SEG35 [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b1_from_scroll_soft //SEG36 scroll_soft::@2 @@ -8404,7 +8404,7 @@ scroll_soft: { //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG42 [14] phi (byte) scroll#0 = (byte/signed byte/word/signed word) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 jmp b1 //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] @@ -8428,12 +8428,12 @@ scroll_bit: { .label _5 = 3 .label c = 9 .label sc = 5 - //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 lda current_bit bne b1_from_scroll_bit //SEG56 scroll_bit::@4 @@ -8446,7 +8446,7 @@ scroll_bit: { sta c lda #0 sta c+1 - //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 asl _4 rol _4+1 asl _4 @@ -8466,7 +8466,7 @@ scroll_bit: { //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [25] phi (byte) current_bit#21 = (byte/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy @@ -8486,17 +8486,17 @@ scroll_bit: { b7: //SEG75 asm { sei } sei - //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] b2_from_b7: - //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 jmp b2 //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] @@ -8511,14 +8511,14 @@ scroll_bit: { lda (current_chargen),y //SEG85 [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG87 scroll_bit::@5 b5: //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] b3_from_b5: - //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 lda #$80+' ' jmp b3 //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] @@ -8530,7 +8530,7 @@ scroll_bit: { //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -8540,12 +8540,12 @@ scroll_bit: { !: //SEG95 [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2_from_b3 //SEG97 scroll_bit::@6 b6: - //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG99 asm { cli } @@ -8567,7 +8567,7 @@ scroll_hard: { .const line7 = SCREEN+$28*7 //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] @@ -8575,41 +8575,41 @@ scroll_hard: { //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG107 scroll_hard::@1 b1: - //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1_from_b1 //SEG126 scroll_hard::@return @@ -8680,7 +8680,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -8741,10 +8741,10 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG13 [3] phi (byte) current_bit#29 = (byte) 1 [phi:main->main::@2#2] -- zpby1=coby1 + //SEG13 [3] phi (byte) current_bit#29 = (byte/signed byte/word/signed word) 1 [phi:main->main::@2#2] -- zpby1=coby1 lda #1 sta current_bit - //SEG14 [3] phi (byte) scroll#18 = (byte) 7 [phi:main->main::@2#3] -- xby=coby1 + //SEG14 [3] phi (byte) scroll#18 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#3] -- xby=coby1 ldx #7 jmp b2 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -8758,13 +8758,13 @@ main: { //SEG20 [3] phi (byte) scroll#18 = (byte) scroll#0 [phi:main::@8->main::@2#3] -- register_copy //SEG21 main::@2 b2: - //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 //SEG23 main::@3 b3: - //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -8789,7 +8789,7 @@ main: { scroll_soft: { //SEG34 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby=_dec_xby dex - //SEG35 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 + //SEG35 [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b1_from_scroll_soft //SEG36 scroll_soft::@2 @@ -8801,7 +8801,7 @@ scroll_soft: { //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG42 [14] phi (byte) scroll#0 = (byte/signed byte/word/signed word) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 jmp b1 //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] @@ -8825,12 +8825,12 @@ scroll_bit: { .label _5 = 3 .label c = 9 .label sc = 5 - //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1_from_scroll_bit //SEG56 scroll_bit::@4 b4: @@ -8842,7 +8842,7 @@ scroll_bit: { sta c lda #0 sta c+1 - //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 asl _4 rol _4+1 asl _4 @@ -8862,7 +8862,7 @@ scroll_bit: { //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [25] phi (byte) current_bit#21 = (byte/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy @@ -8882,17 +8882,17 @@ scroll_bit: { b7: //SEG75 asm { sei } sei - //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] b2_from_b7: - //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 jmp b2 //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] @@ -8907,14 +8907,14 @@ scroll_bit: { lda (current_chargen),y //SEG85 [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG87 scroll_bit::@5 b5: //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] b3_from_b5: - //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 lda #$80+' ' jmp b3 //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] @@ -8926,7 +8926,7 @@ scroll_bit: { //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -8936,12 +8936,12 @@ scroll_bit: { !: //SEG95 [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2_from_b3 //SEG97 scroll_bit::@6 b6: - //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG99 asm { cli } @@ -8963,7 +8963,7 @@ scroll_hard: { .const line7 = SCREEN+$28*7 //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] @@ -8971,41 +8971,41 @@ scroll_hard: { //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG107 scroll_hard::@1 b1: - //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1_from_b1 //SEG126 scroll_hard::@return @@ -9076,7 +9076,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -9153,10 +9153,10 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG13 [3] phi (byte) current_bit#29 = (byte) 1 [phi:main->main::@2#2] -- zpby1=coby1 + //SEG13 [3] phi (byte) current_bit#29 = (byte/signed byte/word/signed word) 1 [phi:main->main::@2#2] -- zpby1=coby1 lda #1 sta current_bit - //SEG14 [3] phi (byte) scroll#18 = (byte) 7 [phi:main->main::@2#3] -- xby=coby1 + //SEG14 [3] phi (byte) scroll#18 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#3] -- xby=coby1 ldx #7 jmp b2 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -9169,13 +9169,13 @@ main: { //SEG20 [3] phi (byte) scroll#18 = (byte) scroll#0 [phi:main::@8->main::@2#3] -- register_copy //SEG21 main::@2 b2: - //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 //SEG23 main::@3 b3: - //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -9200,7 +9200,7 @@ main: { scroll_soft: { //SEG34 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby=_dec_xby dex - //SEG35 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 + //SEG35 [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b1 //SEG36 scroll_soft::@2 @@ -9212,7 +9212,7 @@ scroll_soft: { //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG42 [14] phi (byte) scroll#0 = (byte/signed byte/word/signed word) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 jmp b1 //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] @@ -9235,12 +9235,12 @@ scroll_bit: { .label _5 = 3 .label c = 9 .label sc = 5 - //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 //SEG56 scroll_bit::@4 b4: @@ -9252,7 +9252,7 @@ scroll_bit: { sta c lda #0 sta c+1 - //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 asl _4 rol _4+1 asl _4 @@ -9272,7 +9272,7 @@ scroll_bit: { //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [25] phi (byte) current_bit#21 = (byte/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy @@ -9290,17 +9290,17 @@ scroll_bit: { b7: //SEG75 asm { sei } sei - //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] b2_from_b7: - //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 jmp b2 //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] @@ -9314,13 +9314,13 @@ scroll_bit: { lda (current_chargen),y //SEG85 [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG87 scroll_bit::@5 b5: //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 lda #$80+' ' jmp b3 //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] @@ -9332,7 +9332,7 @@ scroll_bit: { //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -9342,12 +9342,12 @@ scroll_bit: { !: //SEG95 [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG97 scroll_bit::@6 b6: - //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG99 asm { cli } @@ -9369,48 +9369,48 @@ scroll_hard: { .const line7 = SCREEN+$28*7 //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG107 scroll_hard::@1 b1: - //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 //SEG126 scroll_hard::@return @@ -9479,7 +9479,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -9558,10 +9558,10 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG13 [3] phi (byte) current_bit#29 = (byte) 1 [phi:main->main::@2#2] -- zpby1=coby1 + //SEG13 [3] phi (byte) current_bit#29 = (byte/signed byte/word/signed word) 1 [phi:main->main::@2#2] -- zpby1=coby1 lda #1 sta current_bit - //SEG14 [3] phi (byte) scroll#18 = (byte) 7 [phi:main->main::@2#3] -- xby=coby1 + //SEG14 [3] phi (byte) scroll#18 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#3] -- xby=coby1 ldx #7 jmp b2 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -9574,13 +9574,13 @@ main: { //SEG20 [3] phi (byte) scroll#18 = (byte) scroll#0 [phi:main::@8->main::@2#3] -- register_copy //SEG21 main::@2 b2: - //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 //SEG23 main::@3 b3: - //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -9602,7 +9602,7 @@ main: { scroll_soft: { //SEG34 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby=_dec_xby dex - //SEG35 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 + //SEG35 [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b1 //SEG36 scroll_soft::@2 @@ -9612,7 +9612,7 @@ scroll_soft: { //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG42 [14] phi (byte) scroll#0 = (byte/signed byte/word/signed word) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 jmp b1 //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] @@ -9634,12 +9634,12 @@ scroll_bit: { .label _5 = 3 .label c = 9 .label sc = 5 - //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 //SEG56 scroll_bit::@4 //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) @@ -9649,7 +9649,7 @@ scroll_bit: { sta c lda #0 sta c+1 - //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 asl _4 rol _4+1 asl _4 @@ -9668,7 +9668,7 @@ scroll_bit: { // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [25] phi (byte) current_bit#21 = (byte/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy @@ -9685,16 +9685,16 @@ scroll_bit: { //SEG74 scroll_bit::@7 //SEG75 asm { sei } sei - //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] - //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 jmp b2 //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] @@ -9708,12 +9708,12 @@ scroll_bit: { lda (current_chargen),y //SEG85 [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG87 scroll_bit::@5 //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 lda #$80+' ' jmp b3 //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] @@ -9725,7 +9725,7 @@ scroll_bit: { //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -9735,11 +9735,11 @@ scroll_bit: { !: //SEG95 [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG97 scroll_bit::@6 - //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG99 asm { cli } @@ -9759,48 +9759,48 @@ scroll_hard: { .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 jmp b1 //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG107 scroll_hard::@1 b1: - //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 //SEG126 scroll_hard::@return @@ -9864,7 +9864,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -9924,10 +9924,10 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG13 [3] phi (byte) current_bit#29 = (byte) 1 [phi:main->main::@2#2] -- zpby1=coby1 + //SEG13 [3] phi (byte) current_bit#29 = (byte/signed byte/word/signed word) 1 [phi:main->main::@2#2] -- zpby1=coby1 lda #1 sta current_bit - //SEG14 [3] phi (byte) scroll#18 = (byte) 7 [phi:main->main::@2#3] -- xby=coby1 + //SEG14 [3] phi (byte) scroll#18 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#3] -- xby=coby1 ldx #7 jmp b2 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -9939,13 +9939,13 @@ main: { //SEG20 [3] phi (byte) scroll#18 = (byte) scroll#0 [phi:main::@8->main::@2#3] -- register_copy //SEG21 main::@2 b2: - //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2_from_b2 //SEG23 main::@3 b3: - //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -9967,7 +9967,7 @@ main: { scroll_soft: { //SEG34 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby=_dec_xby dex - //SEG35 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 + //SEG35 [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b1 //SEG36 scroll_soft::@2 @@ -9977,7 +9977,7 @@ scroll_soft: { //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG42 [14] phi (byte) scroll#0 = (byte/signed byte/word/signed word) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy @@ -9998,12 +9998,12 @@ scroll_bit: { .label _5 = 3 .label c = 9 .label sc = 5 - //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 //SEG56 scroll_bit::@4 //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) @@ -10013,7 +10013,7 @@ scroll_bit: { sta c lda #0 sta c+1 - //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 asl _4 rol _4+1 asl _4 @@ -10032,7 +10032,7 @@ scroll_bit: { // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [25] phi (byte) current_bit#21 = (byte/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy @@ -10048,16 +10048,16 @@ scroll_bit: { //SEG74 scroll_bit::@7 //SEG75 asm { sei } sei - //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] - //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy @@ -10070,12 +10070,12 @@ scroll_bit: { lda (current_chargen),y //SEG85 [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG87 scroll_bit::@5 //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 lda #$80+' ' jmp b3 //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] @@ -10087,7 +10087,7 @@ scroll_bit: { //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -10097,11 +10097,11 @@ scroll_bit: { !: //SEG95 [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG97 scroll_bit::@6 - //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG99 asm { cli } @@ -10121,47 +10121,47 @@ scroll_hard: { .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG107 scroll_hard::@1 b1: - //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 //SEG126 scroll_hard::@return @@ -10223,7 +10223,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -10278,10 +10278,10 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG13 [3] phi (byte) current_bit#29 = (byte) 1 [phi:main->main::@2#2] -- zpby1=coby1 + //SEG13 [3] phi (byte) current_bit#29 = (byte/signed byte/word/signed word) 1 [phi:main->main::@2#2] -- zpby1=coby1 lda #1 sta current_bit - //SEG14 [3] phi (byte) scroll#18 = (byte) 7 [phi:main->main::@2#3] -- xby=coby1 + //SEG14 [3] phi (byte) scroll#18 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#3] -- xby=coby1 ldx #7 jmp b2 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] @@ -10292,13 +10292,13 @@ main: { //SEG20 [3] phi (byte) scroll#18 = (byte) scroll#0 [phi:main::@8->main::@2#3] -- register_copy //SEG21 main::@2 b2: - //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2 //SEG23 main::@3 b3: - //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -10320,7 +10320,7 @@ main: { scroll_soft: { //SEG34 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby=_dec_xby dex - //SEG35 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 + //SEG35 [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b1 //SEG36 scroll_soft::@2 @@ -10330,7 +10330,7 @@ scroll_soft: { //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG42 [14] phi (byte) scroll#0 = (byte/signed byte/word/signed word) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy @@ -10351,12 +10351,12 @@ scroll_bit: { .label _5 = 3 .label c = 9 .label sc = 5 - //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 //SEG56 scroll_bit::@4 //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) @@ -10366,7 +10366,7 @@ scroll_bit: { sta c lda #0 sta c+1 - //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 asl _4 rol _4+1 asl _4 @@ -10385,7 +10385,7 @@ scroll_bit: { // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [25] phi (byte) current_bit#21 = (byte/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy @@ -10401,16 +10401,16 @@ scroll_bit: { //SEG74 scroll_bit::@7 //SEG75 asm { sei } sei - //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] - //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy @@ -10423,12 +10423,12 @@ scroll_bit: { lda (current_chargen),y //SEG85 [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG87 scroll_bit::@5 //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 lda #$80+' ' jmp b3 //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] @@ -10440,7 +10440,7 @@ scroll_bit: { //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -10450,11 +10450,11 @@ scroll_bit: { !: //SEG95 [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG97 scroll_bit::@6 - //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG99 asm { cli } @@ -10474,47 +10474,47 @@ scroll_hard: { .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG107 scroll_hard::@1 b1: - //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 //SEG126 scroll_hard::@return @@ -10576,7 +10576,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -10630,10 +10630,10 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG13 [3] phi (byte) current_bit#29 = (byte) 1 [phi:main->main::@2#2] -- zpby1=coby1 + //SEG13 [3] phi (byte) current_bit#29 = (byte/signed byte/word/signed word) 1 [phi:main->main::@2#2] -- zpby1=coby1 lda #1 sta current_bit - //SEG14 [3] phi (byte) scroll#18 = (byte) 7 [phi:main->main::@2#3] -- xby=coby1 + //SEG14 [3] phi (byte) scroll#18 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#3] -- xby=coby1 ldx #7 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG16 [3] phi from main::@8 to main::@2 [phi:main::@8->main::@2] @@ -10643,13 +10643,13 @@ main: { //SEG20 [3] phi (byte) scroll#18 = (byte) scroll#0 [phi:main::@8->main::@2#3] -- register_copy //SEG21 main::@2 b2: - //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2 //SEG23 main::@3 b3: - //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -10671,7 +10671,7 @@ main: { scroll_soft: { //SEG34 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby=_dec_xby dex - //SEG35 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 + //SEG35 [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b1 //SEG36 scroll_soft::@2 @@ -10681,7 +10681,7 @@ scroll_soft: { //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG42 [14] phi (byte) scroll#0 = (byte/signed byte/word/signed word) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy @@ -10702,12 +10702,12 @@ scroll_bit: { .label _5 = 3 .label c = 9 .label sc = 5 - //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 //SEG56 scroll_bit::@4 //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) @@ -10717,7 +10717,7 @@ scroll_bit: { sta c lda #0 sta c+1 - //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 asl _4 rol _4+1 asl _4 @@ -10736,7 +10736,7 @@ scroll_bit: { // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [25] phi (byte) current_bit#21 = (byte/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy @@ -10752,16 +10752,16 @@ scroll_bit: { //SEG74 scroll_bit::@7 //SEG75 asm { sei } sei - //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] - //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy @@ -10774,12 +10774,12 @@ scroll_bit: { lda (current_chargen),y //SEG85 [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG87 scroll_bit::@5 //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 lda #$80+' ' jmp b3 //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] @@ -10791,7 +10791,7 @@ scroll_bit: { //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -10801,11 +10801,11 @@ scroll_bit: { !: //SEG95 [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG97 scroll_bit::@6 - //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG99 asm { cli } @@ -10825,47 +10825,47 @@ scroll_hard: { .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG107 scroll_hard::@1 b1: - //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 //SEG126 scroll_hard::@return @@ -10927,7 +10927,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -10950,11 +10950,11 @@ FINAL SYMBOL TABLE (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = (word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte) 1 +(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (byte*) RASTER (const byte*) RASTER#0 RASTER = (word) 53266 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = (word) 53270 (byte*) TEXT @@ -10976,7 +10976,7 @@ FINAL SYMBOL TABLE (byte*) fillscreen::cursor#1 cursor zp ZP_PTR_BYTE:3 16.5 (byte*) fillscreen::cursor#2 cursor zp ZP_PTR_BYTE:3 16.5 (byte) fillscreen::fill -(const byte) fillscreen::fill#0 fill = (byte) 32 +(const byte) fillscreen::fill#0 fill = (byte/signed byte/word/signed word) 32 (byte*) fillscreen::screen (void()) main() (label) main::@2 @@ -11044,21 +11044,21 @@ FINAL SYMBOL TABLE (byte) scroll_hard::i#1 reg byte x 16.5 (byte) scroll_hard::i#2 reg byte x 11.647058823529411 (byte[]) scroll_hard::line0 -(const byte[]) scroll_hard::line0#0 line0 = (const byte*) SCREEN#0+(byte) 40*(byte) 0 +(const byte[]) scroll_hard::line0#0 line0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 (byte[]) scroll_hard::line1 -(const byte[]) scroll_hard::line1#0 line1 = (const byte*) SCREEN#0+(byte) 40*(byte) 1 +(const byte[]) scroll_hard::line1#0 line1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 (byte[]) scroll_hard::line2 -(const byte[]) scroll_hard::line2#0 line2 = (const byte*) SCREEN#0+(byte) 40*(byte) 2 +(const byte[]) scroll_hard::line2#0 line2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 (byte[]) scroll_hard::line3 -(const byte[]) scroll_hard::line3#0 line3 = (const byte*) SCREEN#0+(byte) 40*(byte) 3 +(const byte[]) scroll_hard::line3#0 line3 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 (byte[]) scroll_hard::line4 -(const byte[]) scroll_hard::line4#0 line4 = (const byte*) SCREEN#0+(byte) 40*(byte) 4 +(const byte[]) scroll_hard::line4#0 line4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 (byte[]) scroll_hard::line5 -(const byte[]) scroll_hard::line5#0 line5 = (const byte*) SCREEN#0+(byte) 40*(byte) 5 +(const byte[]) scroll_hard::line5#0 line5 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 (byte[]) scroll_hard::line6 -(const byte[]) scroll_hard::line6#0 line6 = (const byte*) SCREEN#0+(byte) 40*(byte) 6 +(const byte[]) scroll_hard::line6#0 line6 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 (byte[]) scroll_hard::line7 -(const byte[]) scroll_hard::line7#0 line7 = (const byte*) SCREEN#0+(byte) 40*(byte) 7 +(const byte[]) scroll_hard::line7#0 line7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 (void()) scroll_soft() (label) scroll_soft::@1 (label) scroll_soft::@2 @@ -11124,10 +11124,10 @@ main: { sta nxt lda #>TEXT sta nxt+1 - //SEG13 [3] phi (byte) current_bit#29 = (byte) 1 [phi:main->main::@2#2] -- zpby1=coby1 + //SEG13 [3] phi (byte) current_bit#29 = (byte/signed byte/word/signed word) 1 [phi:main->main::@2#2] -- zpby1=coby1 lda #1 sta current_bit - //SEG14 [3] phi (byte) scroll#18 = (byte) 7 [phi:main->main::@2#3] -- xby=coby1 + //SEG14 [3] phi (byte) scroll#18 = (byte/signed byte/word/signed word) 7 [phi:main->main::@2#3] -- xby=coby1 ldx #7 //SEG15 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG16 [3] phi from main::@8 to main::@2 [phi:main::@8->main::@2] @@ -11137,13 +11137,13 @@ main: { //SEG20 [3] phi (byte) scroll#18 = (byte) scroll#0 [phi:main::@8->main::@2#3] -- register_copy //SEG21 main::@2 b2: - //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG22 [4] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$fe bne b2 //SEG23 main::@3 b3: - //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 + //SEG24 [5] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) -- _deref_cowo1_neq_coby2_then_la1 lda RASTER cmp #$ff bne b3 @@ -11165,7 +11165,7 @@ main: { scroll_soft: { //SEG34 [11] (byte) scroll#3 ← -- (byte) scroll#18 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby=_dec_xby dex - //SEG35 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 + //SEG35 [12] if((byte) scroll#3!=(byte/word/signed word) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) -- xby_neq_coby1_then_la1 cpx #$ff bne b1 //SEG36 scroll_soft::@2 @@ -11175,7 +11175,7 @@ scroll_soft: { //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG42 [14] phi (byte) scroll#0 = (byte/signed byte/word/signed word) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy @@ -11196,12 +11196,12 @@ scroll_bit: { .label _5 = 3 .label c = 9 .label sc = 5 - //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] 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:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 //SEG56 scroll_bit::@4 //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) @@ -11211,7 +11211,7 @@ scroll_bit: { sta c lda #0 sta c+1 - //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 asl _4 rol _4+1 asl _4 @@ -11230,7 +11230,7 @@ scroll_bit: { // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [25] phi (byte) current_bit#21 = (byte/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy @@ -11246,16 +11246,16 @@ scroll_bit: { //SEG74 scroll_bit::@7 //SEG75 asm { sei } sei - //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] - //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy @@ -11268,12 +11268,12 @@ scroll_bit: { lda (current_chargen),y //SEG85 [31] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG87 scroll_bit::@5 //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 lda #$80+' ' jmp b3 //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] @@ -11285,7 +11285,7 @@ scroll_bit: { //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -11295,11 +11295,11 @@ scroll_bit: { !: //SEG95 [36] (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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] 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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 //SEG97 scroll_bit::@6 - //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT //SEG99 asm { cli } @@ -11319,47 +11319,47 @@ scroll_hard: { .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG107 scroll_hard::@1 b1: - //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (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:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 //SEG126 scroll_hard::@return @@ -11421,7 +11421,7 @@ fillscreen: { bne !+ inc cursor+1 !: - //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.sym b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.sym index 571f13c79..5f1a79ddc 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.sym @@ -6,11 +6,11 @@ (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = (word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte) 1 +(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (byte*) RASTER (const byte*) RASTER#0 RASTER = (word) 53266 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = (word) 53270 (byte*) TEXT @@ -32,7 +32,7 @@ (byte*) fillscreen::cursor#1 cursor zp ZP_PTR_BYTE:3 16.5 (byte*) fillscreen::cursor#2 cursor zp ZP_PTR_BYTE:3 16.5 (byte) fillscreen::fill -(const byte) fillscreen::fill#0 fill = (byte) 32 +(const byte) fillscreen::fill#0 fill = (byte/signed byte/word/signed word) 32 (byte*) fillscreen::screen (void()) main() (label) main::@2 @@ -100,21 +100,21 @@ (byte) scroll_hard::i#1 reg byte x 16.5 (byte) scroll_hard::i#2 reg byte x 11.647058823529411 (byte[]) scroll_hard::line0 -(const byte[]) scroll_hard::line0#0 line0 = (const byte*) SCREEN#0+(byte) 40*(byte) 0 +(const byte[]) scroll_hard::line0#0 line0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 (byte[]) scroll_hard::line1 -(const byte[]) scroll_hard::line1#0 line1 = (const byte*) SCREEN#0+(byte) 40*(byte) 1 +(const byte[]) scroll_hard::line1#0 line1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 (byte[]) scroll_hard::line2 -(const byte[]) scroll_hard::line2#0 line2 = (const byte*) SCREEN#0+(byte) 40*(byte) 2 +(const byte[]) scroll_hard::line2#0 line2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 (byte[]) scroll_hard::line3 -(const byte[]) scroll_hard::line3#0 line3 = (const byte*) SCREEN#0+(byte) 40*(byte) 3 +(const byte[]) scroll_hard::line3#0 line3 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 (byte[]) scroll_hard::line4 -(const byte[]) scroll_hard::line4#0 line4 = (const byte*) SCREEN#0+(byte) 40*(byte) 4 +(const byte[]) scroll_hard::line4#0 line4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 (byte[]) scroll_hard::line5 -(const byte[]) scroll_hard::line5#0 line5 = (const byte*) SCREEN#0+(byte) 40*(byte) 5 +(const byte[]) scroll_hard::line5#0 line5 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 (byte[]) scroll_hard::line6 -(const byte[]) scroll_hard::line6#0 line6 = (const byte*) SCREEN#0+(byte) 40*(byte) 6 +(const byte[]) scroll_hard::line6#0 line6 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 (byte[]) scroll_hard::line7 -(const byte[]) scroll_hard::line7#0 line7 = (const byte*) SCREEN#0+(byte) 40*(byte) 7 +(const byte[]) scroll_hard::line7#0 line7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 (void()) scroll_soft() (label) scroll_soft::@1 (label) scroll_soft::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.cfg b/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.cfg index de5365426..b3e19a22a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.cfg @@ -8,9 +8,9 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::j#2 ← phi( main/(byte) 0 main::@2/(byte) main::j#1 ) [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) - [2] (signed byte) main::i#2 ← phi( main/-(byte) 127 main::@2/(signed byte) main::i#1 ) [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) - [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) + [2] (byte) main::j#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#1 ) [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) + [2] (signed byte) main::i#2 ← phi( main/-(byte/signed byte/word/signed word) 127 main::@2/(signed byte) main::i#1 ) [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) + [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) to:main::@return main::@return: scope:[main] from main::@1 [4] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.log b/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.log index 42b1f1933..9c44dc74f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.log @@ -14,12 +14,12 @@ Adding pre/post-modifier (signed byte) main::i ← ++ (signed byte) main::i Adding pre/post-modifier (byte) main::j ← ++ (byte) main::j PROGRAM proc (void()) main() - (byte[]) main::screen ← (word) 1024 - (byte) main::j ← (byte) 0 - (byte~) main::$0 ← - (byte) 127 - (signed byte) main::i ← (byte~) main::$0 + (byte[]) main::screen ← (word/signed word) 1024 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 + (signed byte) main::i ← (signed byte/signed word~) main::$0 main::@1: - (boolean~) main::$1 ← (signed byte) main::i < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 goto main::@3 main::@2: @@ -35,7 +35,7 @@ endproc // main() SYMBOLS (void()) main() -(byte~) main::$0 +(signed byte/signed word~) main::$0 (boolean~) main::$1 (label) main::@1 (label) main::@2 @@ -49,13 +49,13 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[]) main::screen ← (word) 1024 - (byte) main::j ← (byte) 0 - (byte~) main::$0 ← - (byte) 127 - (signed byte) main::i ← (byte~) main::$0 + (byte[]) main::screen ← (word/signed word) 1024 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 + (signed byte) main::i ← (signed byte/signed word~) main::$0 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$1 ← (signed byte) main::i < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 to:main::@4 main::@2: scope:[main] from main::@1 main::@5 @@ -87,13 +87,13 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[]) main::screen ← (word) 1024 - (byte) main::j ← (byte) 0 - (byte~) main::$0 ← - (byte) 127 - (signed byte) main::i ← (byte~) main::$0 + (byte[]) main::screen ← (word/signed word) 1024 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 + (signed byte) main::i ← (signed byte/signed word~) main::$0 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$1 ← (signed byte) main::i < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -115,13 +115,13 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[]) main::screen ← (word) 1024 - (byte) main::j ← (byte) 0 - (byte~) main::$0 ← - (byte) 127 - (signed byte) main::i ← (byte~) main::$0 + (byte[]) main::screen ← (word/signed word) 1024 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 + (signed byte) main::i ← (signed byte/signed word~) main::$0 to:main::@1 main::@1: scope:[main] from main main::@2 - (boolean~) main::$1 ← (signed byte) main::i < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -145,16 +145,16 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[]) main::screen#0 ← (word) 1024 - (byte) main::j#0 ← (byte) 0 - (byte~) main::$0 ← - (byte) 127 - (signed byte) main::i#0 ← (byte~) main::$0 + (byte[]) main::screen#0 ← (word/signed word) 1024 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 + (signed byte) main::i#0 ← (signed byte/signed word~) main::$0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 ) (byte[]) main::screen#2 ← phi( main/(byte[]) main::screen#0 main::@2/(byte[]) main::screen#1 ) (signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 ) - (boolean~) main::$1 ← (signed byte) main::i#2 < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -179,16 +179,16 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[]) main::screen#0 ← (word) 1024 - (byte) main::j#0 ← (byte) 0 - (byte~) main::$0 ← - (byte) 127 - (signed byte) main::i#0 ← (byte~) main::$0 + (byte[]) main::screen#0 ← (word/signed word) 1024 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 + (signed byte) main::i#0 ← (signed byte/signed word~) main::$0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 ) (byte[]) main::screen#2 ← phi( main/(byte[]) main::screen#0 main::@2/(byte[]) main::screen#1 ) (signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 ) - (boolean~) main::$1 ← (signed byte) main::i#2 < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -215,7 +215,7 @@ INITIAL SSA SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 +(signed byte/signed word~) main::$0 (boolean~) main::$1 (label) main::@1 (label) main::@2 @@ -241,16 +241,16 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[]) main::screen#0 ← (word) 1024 - (byte) main::j#0 ← (byte) 0 - (byte~) main::$0 ← - (byte) 127 - (signed byte) main::i#0 ← (byte~) main::$0 + (byte[]) main::screen#0 ← (word/signed word) 1024 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 + (signed byte) main::i#0 ← (signed byte/signed word~) main::$0 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 ) (byte[]) main::screen#2 ← phi( main/(byte[]) main::screen#0 main::@2/(byte[]) main::screen#1 ) (signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 ) - (boolean~) main::$1 ← (signed byte) main::i#2 < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -269,7 +269,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Alias (signed byte) main::i#0 = (byte~) main::$0 +Alias (signed byte) main::i#0 = (signed byte/signed word~) main::$0 Alias (signed byte) main::i#2 = (signed byte) main::i#3 Alias (byte[]) main::screen#1 = (byte[]) main::screen#2 Alias (byte) main::j#2 = (byte) main::j#3 @@ -278,15 +278,15 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[]) main::screen#0 ← (word) 1024 - (byte) main::j#0 ← (byte) 0 - (signed byte) main::i#0 ← - (byte) 127 + (byte[]) main::screen#0 ← (word/signed word) 1024 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::j#2 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 ) (byte[]) main::screen#1 ← phi( main/(byte[]) main::screen#0 main::@2/(byte[]) main::screen#1 ) (signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 ) - (boolean~) main::$1 ← (signed byte) main::i#2 < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -308,15 +308,15 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[]) main::screen#0 ← (word) 1024 - (byte) main::j#0 ← (byte) 0 - (signed byte) main::i#0 ← - (byte) 127 + (byte[]) main::screen#0 ← (word/signed word) 1024 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::j#2 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 ) (byte[]) main::screen#1 ← phi( main/(byte[]) main::screen#0 ) (signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 ) - (boolean~) main::$1 ← (signed byte) main::i#2 < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -338,14 +338,14 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[]) main::screen#0 ← (word) 1024 - (byte) main::j#0 ← (byte) 0 - (signed byte) main::i#0 ← - (byte) 127 + (byte[]) main::screen#0 ← (word/signed word) 1024 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::j#2 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 ) (signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 ) - (boolean~) main::$1 ← (signed byte) main::i#2 < (byte) 127 + (boolean~) main::$1 ← (signed byte) main::i#2 < (byte/signed byte/word/signed word) 127 if((boolean~) main::$1) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 @@ -361,20 +361,20 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$1 if((signed byte) main::i#2<(byte) 127) goto main::@2 +Simple Condition (boolean~) main::$1 if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[]) main::screen#0 ← (word) 1024 - (byte) main::j#0 ← (byte) 0 - (signed byte) main::i#0 ← - (byte) 127 + (byte[]) main::screen#0 ← (word/signed word) 1024 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + (signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::j#2 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#1 ) (signed byte) main::i#2 ← phi( main/(signed byte) main::i#0 main::@2/(signed byte) main::i#1 ) - if((signed byte) main::i#2<(byte) 127) goto main::@2 + if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 *((byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 @@ -401,7 +401,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte) main::j#2 ← phi( main/(const byte) main::j#0 main::@2/(byte) main::j#1 ) (signed byte) main::i#2 ← phi( main/(const signed byte) main::i#0 main::@2/(signed byte) main::i#1 ) - if((signed byte) main::i#2<(byte) 127) goto main::@2 + if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 @@ -420,8 +420,8 @@ Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const signed byte) main::i#0 Inlining constant with var siblings (const signed byte) main::i#0 -Constant inlined main::j#0 = (byte) 0 -Constant inlined main::i#0 = -(byte) 127 +Constant inlined main::i#0 = -(byte/signed byte/word/signed word) 127 +Constant inlined main::j#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -429,9 +429,9 @@ CONTROL FLOW GRAPH main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::j#2 ← phi( main/(byte) 0 main::@2/(byte) main::j#1 ) - (signed byte) main::i#2 ← phi( main/-(byte) 127 main::@2/(signed byte) main::i#1 ) - if((signed byte) main::i#2<(byte) 127) goto main::@2 + (byte) main::j#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#1 ) + (signed byte) main::i#2 ← phi( main/-(byte/signed byte/word/signed word) 127 main::@2/(signed byte) main::i#1 ) + if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 @@ -461,7 +461,7 @@ FINAL SYMBOL TABLE (byte) main::j#1 (byte) main::j#2 (byte[]) main::screen -(const byte[]) main::screen#0 = (word) 1024 +(const byte[]) main::screen#0 = (word/signed word) 1024 Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2 Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2 @@ -475,9 +475,9 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte) main::j#2 ← phi( main/(byte) 0 main::@2/(byte~) main::j#4 ) - (signed byte) main::i#2 ← phi( main/-(byte) 127 main::@2/(signed byte~) main::i#4 ) - if((signed byte) main::i#2<(byte) 127) goto main::@2 + (byte) main::j#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte~) main::j#4 ) + (signed byte) main::i#2 ← phi( main/-(byte/signed byte/word/signed word) 127 main::@2/(signed byte~) main::i#4 ) + if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 to:main::@return main::@return: scope:[main] from main::@1 return @@ -508,9 +508,9 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::j#2 ← phi( main/(byte) 0 main::@2/(byte~) main::j#4 ) [ main::i#2 main::j#2 ] - [2] (signed byte) main::i#2 ← phi( main/-(byte) 127 main::@2/(signed byte~) main::i#4 ) [ main::i#2 main::j#2 ] - [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] + [2] (byte) main::j#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte~) main::j#4 ) [ main::i#2 main::j#2 ] + [2] (signed byte) main::i#2 ← phi( main/-(byte/signed byte/word/signed word) 127 main::@2/(signed byte~) main::i#4 ) [ main::i#2 main::j#2 ] + [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] to:main::@return main::@return: scope:[main] from main::@1 [4] return [ ] @@ -543,9 +543,9 @@ main: scope:[main] from @1 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::j#2 ← phi( main/(byte) 0 main::@2/(byte) main::j#1 ) [ main::i#2 main::j#2 ] - [2] (signed byte) main::i#2 ← phi( main/-(byte) 127 main::@2/(signed byte) main::i#1 ) [ main::i#2 main::j#2 ] - [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] + [2] (byte) main::j#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#1 ) [ main::i#2 main::j#2 ] + [2] (signed byte) main::i#2 ← phi( main/-(byte/signed byte/word/signed word) 127 main::@2/(signed byte) main::i#1 ) [ main::i#2 main::j#2 ] + [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] to:main::@return main::@return: scope:[main] from main::@1 [4] return [ ] @@ -567,9 +567,9 @@ main: scope:[main] from @1 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@2 - [2] (byte) main::j#2 ← phi( main/(byte) 0 main::@2/(byte) main::j#1 ) [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) - [2] (signed byte) main::i#2 ← phi( main/-(byte) 127 main::@2/(signed byte) main::i#1 ) [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) - [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) + [2] (byte) main::j#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#1 ) [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) + [2] (signed byte) main::i#2 ← phi( main/-(byte/signed byte/word/signed word) 127 main::@2/(signed byte) main::i#1 ) [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) + [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) to:main::@return main::@return: scope:[main] from main::@1 [4] return [ ] ( main:0 [ ] ) @@ -583,11 +583,11 @@ main::@2: scope:[main] from main::@1 DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main main::@1 dominated by @1 @begin main::@1 main -main::@return dominated by @1 main::@return @begin main::@1 main -main::@2 dominated by @1 @begin main::@2 main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main +main::@2 dominated by @1 @begin main::@1 main::@2 main Found back edge: Loop head: main::@1 tails: main::@2 blocks: null Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 @@ -644,16 +644,16 @@ main: { .label j = 3 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::j#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta j - //SEG10 [2] phi (signed byte) main::i#2 = -(byte) 127 [phi:main->main::@1#1] -- zpsby1=coby1 + //SEG10 [2] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word) 127 [phi:main->main::@1#1] -- zpsby1=coby1 lda #-$7f sta i jmp b1 //SEG11 main::@1 b1: - //SEG12 [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 + //SEG12 [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 lda i sec sbc #$7f @@ -689,14 +689,14 @@ Potential register analysis [3] if(main::i#2<127) goto main::@2 missing fragment MISSING FRAGMENTS xsby_lt_coby1_then_la1 ysby_lt_coby1_then_la1 -Statement [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) always clobbers reg byte a +Statement [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Potential register analysis [3] if(main::i#2<127) goto main::@2 missing fragment xsby_lt_coby1_then_la1 allocation: reg sbyte x [ main::i#2 main::i#1 ] Potential register analysis [3] if(main::i#2<127) goto main::@2 missing fragment ysby_lt_coby1_then_la1 allocation: reg sbyte y [ main::i#2 main::i#1 ] MISSING FRAGMENTS xsby_lt_coby1_then_la1 ysby_lt_coby1_then_la1 -Statement [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) always clobbers reg byte a +Statement [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) always clobbers reg byte a Potential registers zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] : zp ZP_SBYTE:2 , reg sbyte a , reg sbyte x , reg sbyte y , Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , @@ -710,8 +710,8 @@ MISSING FRAGMENTS asby=_inc_asby cowo1_derefidx_xby=asby cowo1_derefidx_yby=asby - xsby=coby1 - ysby=coby1 + xsby_lt_coby1_then_la1 + ysby_lt_coby1_then_la1 Removing instruction jmp b1 Removing instruction jmp bend Removing instruction jmp b1 @@ -739,14 +739,14 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::j#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG10 [2] phi (signed byte) main::i#2 = -(byte) 127 [phi:main->main::@1#1] -- zpsby1=coby1 + //SEG10 [2] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word) 127 [phi:main->main::@1#1] -- zpsby1=coby1 lda #-$7f sta i //SEG11 main::@1 b1: - //SEG12 [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 + //SEG12 [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 lda i sec sbc #$7f @@ -797,14 +797,14 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::j#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG10 [2] phi (signed byte) main::i#2 = -(byte) 127 [phi:main->main::@1#1] -- zpsby1=coby1 + //SEG10 [2] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word) 127 [phi:main->main::@1#1] -- zpsby1=coby1 lda #-$7f sta i //SEG11 main::@1 b1: - //SEG12 [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 + //SEG12 [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 lda i sec sbc #$7f @@ -855,14 +855,14 @@ main: { .const screen = $400 .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::j#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG10 [2] phi (signed byte) main::i#2 = -(byte) 127 [phi:main->main::@1#1] -- zpsby1=coby1 + //SEG10 [2] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word) 127 [phi:main->main::@1#1] -- zpsby1=coby1 lda #-$7f sta i //SEG11 main::@1 b1: - //SEG12 [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 + //SEG12 [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 lda i sec sbc #$7f @@ -903,7 +903,7 @@ FINAL SYMBOL TABLE (byte) main::j#1 reg byte x 22.0 (byte) main::j#2 reg byte x 8.25 (byte[]) main::screen -(const byte[]) main::screen#0 screen = (word) 1024 +(const byte[]) main::screen#0 screen = (word/signed word) 1024 zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] @@ -925,14 +925,14 @@ main: { .const screen = $400 .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::j#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 + //SEG9 [2] phi (byte) main::j#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG10 [2] phi (signed byte) main::i#2 = -(byte) 127 [phi:main->main::@1#1] -- zpsby1=coby1 + //SEG10 [2] phi (signed byte) main::i#2 = -(byte/signed byte/word/signed word) 127 [phi:main->main::@1#1] -- zpsby1=coby1 lda #-$7f sta i //SEG11 main::@1 b1: - //SEG12 [3] if((signed byte) main::i#2<(byte) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 + //SEG12 [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- zpsby1_lt_coby1_then_la1 lda i sec sbc #$7f diff --git a/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.sym b/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.sym index cf8c15c36..c2e37c6c9 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/signed-bytes.sym @@ -12,7 +12,7 @@ (byte) main::j#1 reg byte x 22.0 (byte) main::j#2 reg byte x 8.25 (byte[]) main::screen -(const byte[]) main::screen#0 screen = (word) 1024 +(const byte[]) main::screen#0 screen = (word/signed word) 1024 zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/summin.cfg b/src/main/java/dk/camelot64/kickc/test/ref/summin.cfg index 972465c96..c94a598ef 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/summin.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/summin.cfg @@ -25,8 +25,8 @@ main::@return: scope:[main] from main::@3 [10] return [ ] ( main:0 [ ] ) to:@return sum: scope:[sum] from main main::@1 main::@2 - [11] (byte) sum::b#3 ← phi( main/(byte) 2 main::@1/(byte) 4 main::@2/(byte) 13 ) [ sum::a#3 sum::b#3 ] ( main:0::sum:2 [ sum::a#3 sum::b#3 ] main:0::sum:4 [ main::s1#0 sum::a#3 sum::b#3 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::a#3 sum::b#3 ] ) - [11] (byte) sum::a#3 ← phi( main/(byte) 1 main::@1/(byte) 3 main::@2/(byte) 9 ) [ sum::a#3 sum::b#3 ] ( main:0::sum:2 [ sum::a#3 sum::b#3 ] main:0::sum:4 [ main::s1#0 sum::a#3 sum::b#3 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::a#3 sum::b#3 ] ) + [11] (byte) sum::b#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte/signed byte/word/signed word) 13 ) [ sum::a#3 sum::b#3 ] ( main:0::sum:2 [ sum::a#3 sum::b#3 ] main:0::sum:4 [ main::s1#0 sum::a#3 sum::b#3 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::a#3 sum::b#3 ] ) + [11] (byte) sum::a#3 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 main::@2/(byte/signed byte/word/signed word) 9 ) [ sum::a#3 sum::b#3 ] ( main:0::sum:2 [ sum::a#3 sum::b#3 ] main:0::sum:4 [ main::s1#0 sum::a#3 sum::b#3 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::a#3 sum::b#3 ] ) [12] (byte) sum::return#0 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#0 ] ( main:0::sum:2 [ sum::return#0 ] main:0::sum:4 [ main::s1#0 sum::return#0 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::return#0 ] ) to:sum::@return sum::@return: scope:[sum] from sum diff --git a/src/main/java/dk/camelot64/kickc/test/ref/summin.log b/src/main/java/dk/camelot64/kickc/test/ref/summin.log index fab8cd45b..bfd81468e 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/summin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/summin.log @@ -11,11 +11,11 @@ byte sum(byte a, byte b) { PROGRAM proc (void()) main() - (byte~) main::$0 ← call sum (byte) 1 (byte) 2 + (byte~) main::$0 ← call sum (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 (byte) main::s1 ← (byte~) main::$0 - (byte~) main::$1 ← call sum (byte) 3 (byte) 4 + (byte~) main::$1 ← call sum (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word) 4 (byte) main::s2 ← (byte~) main::$1 - (byte~) main::$2 ← call sum (byte) 9 (byte) 13 + (byte~) main::$2 ← call sum (byte/signed byte/word/signed word) 9 (byte/signed byte/word/signed word) 13 (byte) main::s3 ← (byte~) main::$2 (byte~) main::$3 ← (byte) main::s1 + (byte) main::s2 (byte~) main::$4 ← (byte~) main::$3 + (byte) main::s3 @@ -56,11 +56,11 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte~) main::$0 ← call sum (byte) 1 (byte) 2 + (byte~) main::$0 ← call sum (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 (byte) main::s1 ← (byte~) main::$0 - (byte~) main::$1 ← call sum (byte) 3 (byte) 4 + (byte~) main::$1 ← call sum (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word) 4 (byte) main::s2 ← (byte~) main::$1 - (byte~) main::$2 ← call sum (byte) 9 (byte) 13 + (byte~) main::$2 ← call sum (byte/signed byte/word/signed word) 9 (byte/signed byte/word/signed word) 13 (byte) main::s3 ← (byte~) main::$2 (byte~) main::$3 ← (byte) main::s1 + (byte) main::s2 (byte~) main::$4 ← (byte~) main::$3 + (byte) main::s3 @@ -92,11 +92,11 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@2 main: scope:[main] from - (byte~) main::$0 ← call sum (byte) 1 (byte) 2 + (byte~) main::$0 ← call sum (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 (byte) main::s1 ← (byte~) main::$0 - (byte~) main::$1 ← call sum (byte) 3 (byte) 4 + (byte~) main::$1 ← call sum (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word) 4 (byte) main::s2 ← (byte~) main::$1 - (byte~) main::$2 ← call sum (byte) 9 (byte) 13 + (byte~) main::$2 ← call sum (byte/signed byte/word/signed word) 9 (byte/signed byte/word/signed word) 13 (byte) main::s3 ← (byte~) main::$2 (byte~) main::$3 ← (byte) main::s1 + (byte) main::s2 (byte~) main::$4 ← (byte~) main::$3 + (byte) main::s3 @@ -124,22 +124,22 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@2 main: scope:[main] from @2 - (byte) sum::a ← (byte) 1 - (byte) sum::b ← (byte) 2 + (byte) sum::a ← (byte/signed byte/word/signed word) 1 + (byte) sum::b ← (byte/signed byte/word/signed word) 2 (byte) sum::return ← call sum param-assignment to:main::@1 main::@1: scope:[main] from main (byte~) main::$0 ← (byte) sum::return (byte) main::s1 ← (byte~) main::$0 - (byte) sum::a ← (byte) 3 - (byte) sum::b ← (byte) 4 + (byte) sum::a ← (byte/signed byte/word/signed word) 3 + (byte) sum::b ← (byte/signed byte/word/signed word) 4 (byte) sum::return ← call sum param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte~) main::$1 ← (byte) sum::return (byte) main::s2 ← (byte~) main::$1 - (byte) sum::a ← (byte) 9 - (byte) sum::b ← (byte) 13 + (byte) sum::a ← (byte/signed byte/word/signed word) 9 + (byte) sum::b ← (byte/signed byte/word/signed word) 13 (byte) sum::return ← call sum param-assignment to:main::@3 main::@3: scope:[main] from main::@2 @@ -173,16 +173,16 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@2 main: scope:[main] from @2 - (byte) sum::a#0 ← (byte) 1 - (byte) sum::b#0 ← (byte) 2 + (byte) sum::a#0 ← (byte/signed byte/word/signed word) 1 + (byte) sum::b#0 ← (byte/signed byte/word/signed word) 2 (byte) sum::return#0 ← call sum param-assignment to:main::@1 main::@1: scope:[main] from main (byte) sum::return#5 ← phi( main/(byte) sum::return#0 ) (byte~) main::$0 ← (byte) sum::return#5 (byte) main::s1#0 ← (byte~) main::$0 - (byte) sum::a#1 ← (byte) 3 - (byte) sum::b#1 ← (byte) 4 + (byte) sum::a#1 ← (byte/signed byte/word/signed word) 3 + (byte) sum::b#1 ← (byte/signed byte/word/signed word) 4 (byte) sum::return#1 ← call sum param-assignment to:main::@2 main::@2: scope:[main] from main::@1 @@ -190,8 +190,8 @@ main::@2: scope:[main] from main::@1 (byte) sum::return#6 ← phi( main::@1/(byte) sum::return#1 ) (byte~) main::$1 ← (byte) sum::return#6 (byte) main::s2#0 ← (byte~) main::$1 - (byte) sum::a#2 ← (byte) 9 - (byte) sum::b#2 ← (byte) 13 + (byte) sum::a#2 ← (byte/signed byte/word/signed word) 9 + (byte) sum::b#2 ← (byte/signed byte/word/signed word) 13 (byte) sum::return#2 ← call sum param-assignment to:main::@3 main::@3: scope:[main] from main::@2 @@ -229,8 +229,8 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@2 main: scope:[main] from @2 - (byte) sum::a#0 ← (byte) 1 - (byte) sum::b#0 ← (byte) 2 + (byte) sum::a#0 ← (byte/signed byte/word/signed word) 1 + (byte) sum::b#0 ← (byte/signed byte/word/signed word) 2 call sum param-assignment (byte) sum::return#0 ← (byte) sum::return#4 to:main::@1 @@ -238,8 +238,8 @@ main::@1: scope:[main] from main (byte) sum::return#5 ← phi( main/(byte) sum::return#0 ) (byte~) main::$0 ← (byte) sum::return#5 (byte) main::s1#0 ← (byte~) main::$0 - (byte) sum::a#1 ← (byte) 3 - (byte) sum::b#1 ← (byte) 4 + (byte) sum::a#1 ← (byte/signed byte/word/signed word) 3 + (byte) sum::b#1 ← (byte/signed byte/word/signed word) 4 call sum param-assignment (byte) sum::return#1 ← (byte) sum::return#4 to:main::@2 @@ -248,8 +248,8 @@ main::@2: scope:[main] from main::@1 (byte) sum::return#6 ← phi( main::@1/(byte) sum::return#1 ) (byte~) main::$1 ← (byte) sum::return#6 (byte) main::s2#0 ← (byte~) main::$1 - (byte) sum::a#2 ← (byte) 9 - (byte) sum::b#2 ← (byte) 13 + (byte) sum::a#2 ← (byte/signed byte/word/signed word) 9 + (byte) sum::b#2 ← (byte/signed byte/word/signed word) 13 call sum param-assignment (byte) sum::return#2 ← (byte) sum::return#4 to:main::@3 @@ -340,8 +340,8 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@2 main: scope:[main] from @2 - (byte) sum::a#0 ← (byte) 1 - (byte) sum::b#0 ← (byte) 2 + (byte) sum::a#0 ← (byte/signed byte/word/signed word) 1 + (byte) sum::b#0 ← (byte/signed byte/word/signed word) 2 call sum param-assignment (byte) sum::return#0 ← (byte) sum::return#4 to:main::@1 @@ -349,8 +349,8 @@ main::@1: scope:[main] from main (byte) sum::return#5 ← phi( main/(byte) sum::return#0 ) (byte~) main::$0 ← (byte) sum::return#5 (byte) main::s1#0 ← (byte~) main::$0 - (byte) sum::a#1 ← (byte) 3 - (byte) sum::b#1 ← (byte) 4 + (byte) sum::a#1 ← (byte/signed byte/word/signed word) 3 + (byte) sum::b#1 ← (byte/signed byte/word/signed word) 4 call sum param-assignment (byte) sum::return#1 ← (byte) sum::return#4 to:main::@2 @@ -359,8 +359,8 @@ main::@2: scope:[main] from main::@1 (byte) sum::return#6 ← phi( main::@1/(byte) sum::return#1 ) (byte~) main::$1 ← (byte) sum::return#6 (byte) main::s2#0 ← (byte~) main::$1 - (byte) sum::a#2 ← (byte) 9 - (byte) sum::b#2 ← (byte) 13 + (byte) sum::a#2 ← (byte/signed byte/word/signed word) 9 + (byte) sum::b#2 ← (byte/signed byte/word/signed word) 13 call sum param-assignment (byte) sum::return#2 ← (byte) sum::return#4 to:main::@3 @@ -406,20 +406,20 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@2 main: scope:[main] from @2 - (byte) sum::a#0 ← (byte) 1 - (byte) sum::b#0 ← (byte) 2 + (byte) sum::a#0 ← (byte/signed byte/word/signed word) 1 + (byte) sum::b#0 ← (byte/signed byte/word/signed word) 2 call sum param-assignment to:main::@1 main::@1: scope:[main] from main (byte) main::s1#0 ← (byte) sum::return#0 - (byte) sum::a#1 ← (byte) 3 - (byte) sum::b#1 ← (byte) 4 + (byte) sum::a#1 ← (byte/signed byte/word/signed word) 3 + (byte) sum::b#1 ← (byte/signed byte/word/signed word) 4 call sum param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte) main::s2#0 ← (byte) sum::return#0 - (byte) sum::a#2 ← (byte) 9 - (byte) sum::b#2 ← (byte) 13 + (byte) sum::a#2 ← (byte/signed byte/word/signed word) 9 + (byte) sum::b#2 ← (byte/signed byte/word/signed word) 13 call sum param-assignment to:main::@3 main::@3: scope:[main] from main::@2 @@ -509,12 +509,12 @@ Inlining constant with different constant siblings (const byte) sum::a#2 Inlining constant with var siblings (const byte) sum::b#2 Inlining constant with different constant siblings (const byte) sum::b#2 Inlining constant with different constant siblings (const byte) sum::b#2 -Constant inlined sum::a#0 = (byte) 1 -Constant inlined sum::a#1 = (byte) 3 -Constant inlined sum::a#2 = (byte) 9 -Constant inlined sum::b#0 = (byte) 2 -Constant inlined sum::b#1 = (byte) 4 -Constant inlined sum::b#2 = (byte) 13 +Constant inlined sum::b#1 = (byte/signed byte/word/signed word) 4 +Constant inlined sum::a#2 = (byte/signed byte/word/signed word) 9 +Constant inlined sum::b#0 = (byte/signed byte/word/signed word) 2 +Constant inlined sum::a#1 = (byte/signed byte/word/signed word) 3 +Constant inlined sum::b#2 = (byte/signed byte/word/signed word) 13 +Constant inlined sum::a#0 = (byte/signed byte/word/signed word) 1 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -539,8 +539,8 @@ main::@return: scope:[main] from main::@3 return to:@return sum: scope:[sum] from main main::@1 main::@2 - (byte) sum::b#3 ← phi( main/(byte) 2 main::@1/(byte) 4 main::@2/(byte) 13 ) - (byte) sum::a#3 ← phi( main/(byte) 1 main::@1/(byte) 3 main::@2/(byte) 9 ) + (byte) sum::b#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte/signed byte/word/signed word) 13 ) + (byte) sum::a#3 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 main::@2/(byte/signed byte/word/signed word) 9 ) (byte) sum::return#0 ← (byte) sum::a#3 + (byte) sum::b#3 to:sum::@return sum::@return: scope:[sum] from sum @@ -607,8 +607,8 @@ main::@return: scope:[main] from main::@3 return to:@return sum: scope:[sum] from main main::@1 main::@2 - (byte) sum::b#3 ← phi( main/(byte) 2 main::@1/(byte) 4 main::@2/(byte) 13 ) - (byte) sum::a#3 ← phi( main/(byte) 1 main::@1/(byte) 3 main::@2/(byte) 9 ) + (byte) sum::b#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte/signed byte/word/signed word) 13 ) + (byte) sum::a#3 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 main::@2/(byte/signed byte/word/signed word) 9 ) (byte) sum::return#0 ← (byte) sum::a#3 + (byte) sum::b#3 to:sum::@return sum::@return: scope:[sum] from sum @@ -654,8 +654,8 @@ main::@return: scope:[main] from main::@3 [10] return [ ] to:@return sum: scope:[sum] from main main::@1 main::@2 - [11] (byte) sum::b#3 ← phi( main/(byte) 2 main::@1/(byte) 4 main::@2/(byte) 13 ) [ sum::a#3 sum::b#3 ] - [11] (byte) sum::a#3 ← phi( main/(byte) 1 main::@1/(byte) 3 main::@2/(byte) 9 ) [ sum::a#3 sum::b#3 ] + [11] (byte) sum::b#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte/signed byte/word/signed word) 13 ) [ sum::a#3 sum::b#3 ] + [11] (byte) sum::a#3 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 main::@2/(byte/signed byte/word/signed word) 9 ) [ sum::a#3 sum::b#3 ] [12] (byte) sum::return#0 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#0 ] to:sum::@return sum::@return: scope:[sum] from sum @@ -700,8 +700,8 @@ main::@return: scope:[main] from main::@3 [10] return [ ] to:@return sum: scope:[sum] from main main::@1 main::@2 - [11] (byte) sum::b#3 ← phi( main/(byte) 2 main::@1/(byte) 4 main::@2/(byte) 13 ) [ sum::a#3 sum::b#3 ] - [11] (byte) sum::a#3 ← phi( main/(byte) 1 main::@1/(byte) 3 main::@2/(byte) 9 ) [ sum::a#3 sum::b#3 ] + [11] (byte) sum::b#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte/signed byte/word/signed word) 13 ) [ sum::a#3 sum::b#3 ] + [11] (byte) sum::a#3 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 main::@2/(byte/signed byte/word/signed word) 9 ) [ sum::a#3 sum::b#3 ] [12] (byte) sum::return#0 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#0 ] to:sum::@return sum::@return: scope:[sum] from sum @@ -736,8 +736,8 @@ main::@return: scope:[main] from main::@3 [10] return [ ] ( main:0 [ ] ) to:@return sum: scope:[sum] from main main::@1 main::@2 - [11] (byte) sum::b#3 ← phi( main/(byte) 2 main::@1/(byte) 4 main::@2/(byte) 13 ) [ sum::a#3 sum::b#3 ] ( main:0::sum:2 [ sum::a#3 sum::b#3 ] main:0::sum:4 [ main::s1#0 sum::a#3 sum::b#3 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::a#3 sum::b#3 ] ) - [11] (byte) sum::a#3 ← phi( main/(byte) 1 main::@1/(byte) 3 main::@2/(byte) 9 ) [ sum::a#3 sum::b#3 ] ( main:0::sum:2 [ sum::a#3 sum::b#3 ] main:0::sum:4 [ main::s1#0 sum::a#3 sum::b#3 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::a#3 sum::b#3 ] ) + [11] (byte) sum::b#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte/signed byte/word/signed word) 13 ) [ sum::a#3 sum::b#3 ] ( main:0::sum:2 [ sum::a#3 sum::b#3 ] main:0::sum:4 [ main::s1#0 sum::a#3 sum::b#3 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::a#3 sum::b#3 ] ) + [11] (byte) sum::a#3 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 main::@2/(byte/signed byte/word/signed word) 9 ) [ sum::a#3 sum::b#3 ] ( main:0::sum:2 [ sum::a#3 sum::b#3 ] main:0::sum:4 [ main::s1#0 sum::a#3 sum::b#3 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::a#3 sum::b#3 ] ) [12] (byte) sum::return#0 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#0 ] ( main:0::sum:2 [ sum::return#0 ] main:0::sum:4 [ main::s1#0 sum::return#0 ] main:0::sum:6 [ main::s1#0 main::s2#0 sum::return#0 ] ) to:sum::@return sum::@return: scope:[sum] from sum @@ -747,14 +747,14 @@ sum::@return: scope:[sum] from sum DOMINATORS @begin dominated by @begin @2 dominated by @2 @begin -@end dominated by @2 @end @begin +@end dominated by @2 @begin @end main dominated by @2 @begin main main::@1 dominated by @2 @begin main::@1 main -main::@2 dominated by @2 @begin main::@2 main::@1 main -main::@3 dominated by @2 @begin main::@2 main::@1 main::@3 main -main::@return dominated by @2 main::@return @begin main::@2 main::@1 main::@3 main -sum dominated by @2 @begin sum main -sum::@return dominated by @2 @begin sum::@return sum main +main::@2 dominated by @2 @begin main::@1 main::@2 main +main::@3 dominated by @2 @begin main::@1 main::@2 main main::@3 +main::@return dominated by main::@return @2 @begin main::@1 main::@2 main main::@3 +sum dominated by @2 @begin main sum +sum::@return dominated by @2 @begin main sum sum::@return NATURAL LOOPS @@ -837,10 +837,10 @@ main: { //SEG8 [2] call sum param-assignment [ sum::return#0 ] ( main:0 [ sum::return#0 ] ) //SEG9 [11] phi from main to sum [phi:main->sum] sum_from_main: - //SEG10 [11] phi (byte) sum::b#3 = (byte) 2 [phi:main->sum#0] -- zpby1=coby1 + //SEG10 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 2 [phi:main->sum#0] -- zpby1=coby1 lda #2 sta sum.b - //SEG11 [11] phi (byte) sum::a#3 = (byte) 1 [phi:main->sum#1] -- zpby1=coby1 + //SEG11 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 1 [phi:main->sum#1] -- zpby1=coby1 lda #1 sta sum.a jsr sum @@ -853,10 +853,10 @@ main: { //SEG14 [4] call sum param-assignment [ main::s1#0 sum::return#0 ] ( main:0 [ main::s1#0 sum::return#0 ] ) //SEG15 [11] phi from main::@1 to sum [phi:main::@1->sum] sum_from_b1: - //SEG16 [11] phi (byte) sum::b#3 = (byte) 4 [phi:main::@1->sum#0] -- zpby1=coby1 + //SEG16 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 4 [phi:main::@1->sum#0] -- zpby1=coby1 lda #4 sta sum.b - //SEG17 [11] phi (byte) sum::a#3 = (byte) 3 [phi:main::@1->sum#1] -- zpby1=coby1 + //SEG17 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 3 [phi:main::@1->sum#1] -- zpby1=coby1 lda #3 sta sum.a jsr sum @@ -869,10 +869,10 @@ main: { //SEG20 [6] call sum param-assignment [ main::s1#0 sum::return#0 main::s2#0 ] ( main:0 [ main::s1#0 sum::return#0 main::s2#0 ] ) //SEG21 [11] phi from main::@2 to sum [phi:main::@2->sum] sum_from_b2: - //SEG22 [11] phi (byte) sum::b#3 = (byte) 13 [phi:main::@2->sum#0] -- zpby1=coby1 + //SEG22 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 13 [phi:main::@2->sum#0] -- zpby1=coby1 lda #$d sta sum.b - //SEG23 [11] phi (byte) sum::a#3 = (byte) 9 [phi:main::@2->sum#1] -- zpby1=coby1 + //SEG23 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 9 [phi:main::@2->sum#1] -- zpby1=coby1 lda #9 sta sum.a jsr sum @@ -931,12 +931,12 @@ Uplift Scope [sum] 2: zp ZP_BYTE:2 [ sum::a#3 ] 2: zp ZP_BYTE:3 [ sum::b#3 ] 1.6 Uplift Scope [] Uplifting [main] best 152 combination reg byte a [ main::s4#0 ] reg byte a [ main::$3 ] zp ZP_BYTE:6 [ main::s3#0 ] reg byte x [ main::s2#0 ] zp ZP_BYTE:4 [ main::s1#0 ] -Uplifting [sum] best 124 combination reg byte y [ sum::a#3 ] reg byte a [ sum::b#3 ] reg byte a [ sum::return#0 ] -Uplifting [] best 124 combination +Uplifting [sum] best 126 combination reg byte y [ sum::a#3 ] reg byte a [ sum::b#3 ] reg byte a [ sum::return#0 ] +Uplifting [] best 126 combination Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::s3#0 ] -Uplifting [main] best 124 combination zp ZP_BYTE:6 [ main::s3#0 ] +Uplifting [main] best 126 combination zp ZP_BYTE:6 [ main::s3#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::s1#0 ] -Uplifting [main] best 124 combination zp ZP_BYTE:4 [ main::s1#0 ] +Uplifting [main] best 126 combination zp ZP_BYTE:4 [ main::s1#0 ] Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:2 [ main::s1#0 ] Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:3 [ main::s3#0 ] Removing instruction jmp b2 @@ -970,9 +970,9 @@ main: { //SEG8 [2] call sum param-assignment [ sum::return#0 ] ( main:0 [ sum::return#0 ] ) //SEG9 [11] phi from main to sum [phi:main->sum] sum_from_main: - //SEG10 [11] phi (byte) sum::b#3 = (byte) 2 [phi:main->sum#0] -- aby=coby1 + //SEG10 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 2 [phi:main->sum#0] -- aby=coby1 lda #2 - //SEG11 [11] phi (byte) sum::a#3 = (byte) 1 [phi:main->sum#1] -- yby=coby1 + //SEG11 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 1 [phi:main->sum#1] -- yby=coby1 ldy #1 jsr sum //SEG12 main::@1 @@ -982,9 +982,9 @@ main: { //SEG14 [4] call sum param-assignment [ main::s1#0 sum::return#0 ] ( main:0 [ main::s1#0 sum::return#0 ] ) //SEG15 [11] phi from main::@1 to sum [phi:main::@1->sum] sum_from_b1: - //SEG16 [11] phi (byte) sum::b#3 = (byte) 4 [phi:main::@1->sum#0] -- aby=coby1 + //SEG16 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 4 [phi:main::@1->sum#0] -- aby=coby1 lda #4 - //SEG17 [11] phi (byte) sum::a#3 = (byte) 3 [phi:main::@1->sum#1] -- yby=coby1 + //SEG17 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 3 [phi:main::@1->sum#1] -- yby=coby1 ldy #3 jsr sum //SEG18 main::@2 @@ -994,9 +994,9 @@ main: { //SEG20 [6] call sum param-assignment [ main::s1#0 sum::return#0 main::s2#0 ] ( main:0 [ main::s1#0 sum::return#0 main::s2#0 ] ) //SEG21 [11] phi from main::@2 to sum [phi:main::@2->sum] sum_from_b2: - //SEG22 [11] phi (byte) sum::b#3 = (byte) 13 [phi:main::@2->sum#0] -- aby=coby1 + //SEG22 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 13 [phi:main::@2->sum#0] -- aby=coby1 lda #$d - //SEG23 [11] phi (byte) sum::a#3 = (byte) 9 [phi:main::@2->sum#1] -- yby=coby1 + //SEG23 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 9 [phi:main::@2->sum#1] -- yby=coby1 ldy #9 jsr sum //SEG24 main::@3 @@ -1051,9 +1051,9 @@ main: { //SEG8 [2] call sum param-assignment [ sum::return#0 ] ( main:0 [ sum::return#0 ] ) //SEG9 [11] phi from main to sum [phi:main->sum] sum_from_main: - //SEG10 [11] phi (byte) sum::b#3 = (byte) 2 [phi:main->sum#0] -- aby=coby1 + //SEG10 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 2 [phi:main->sum#0] -- aby=coby1 lda #2 - //SEG11 [11] phi (byte) sum::a#3 = (byte) 1 [phi:main->sum#1] -- yby=coby1 + //SEG11 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 1 [phi:main->sum#1] -- yby=coby1 ldy #1 jsr sum //SEG12 main::@1 @@ -1063,9 +1063,9 @@ main: { //SEG14 [4] call sum param-assignment [ main::s1#0 sum::return#0 ] ( main:0 [ main::s1#0 sum::return#0 ] ) //SEG15 [11] phi from main::@1 to sum [phi:main::@1->sum] sum_from_b1: - //SEG16 [11] phi (byte) sum::b#3 = (byte) 4 [phi:main::@1->sum#0] -- aby=coby1 + //SEG16 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 4 [phi:main::@1->sum#0] -- aby=coby1 lda #4 - //SEG17 [11] phi (byte) sum::a#3 = (byte) 3 [phi:main::@1->sum#1] -- yby=coby1 + //SEG17 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 3 [phi:main::@1->sum#1] -- yby=coby1 ldy #3 jsr sum //SEG18 main::@2 @@ -1075,9 +1075,9 @@ main: { //SEG20 [6] call sum param-assignment [ main::s1#0 sum::return#0 main::s2#0 ] ( main:0 [ main::s1#0 sum::return#0 main::s2#0 ] ) //SEG21 [11] phi from main::@2 to sum [phi:main::@2->sum] sum_from_b2: - //SEG22 [11] phi (byte) sum::b#3 = (byte) 13 [phi:main::@2->sum#0] -- aby=coby1 + //SEG22 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 13 [phi:main::@2->sum#0] -- aby=coby1 lda #$d - //SEG23 [11] phi (byte) sum::a#3 = (byte) 9 [phi:main::@2->sum#1] -- yby=coby1 + //SEG23 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 9 [phi:main::@2->sum#1] -- yby=coby1 ldy #9 jsr sum //SEG24 main::@3 @@ -1137,9 +1137,9 @@ main: { .label s3 = 3 //SEG8 [2] call sum param-assignment [ sum::return#0 ] ( main:0 [ sum::return#0 ] ) //SEG9 [11] phi from main to sum [phi:main->sum] - //SEG10 [11] phi (byte) sum::b#3 = (byte) 2 [phi:main->sum#0] -- aby=coby1 + //SEG10 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 2 [phi:main->sum#0] -- aby=coby1 lda #2 - //SEG11 [11] phi (byte) sum::a#3 = (byte) 1 [phi:main->sum#1] -- yby=coby1 + //SEG11 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 1 [phi:main->sum#1] -- yby=coby1 ldy #1 jsr sum //SEG12 main::@1 @@ -1147,9 +1147,9 @@ main: { sta s1 //SEG14 [4] call sum param-assignment [ main::s1#0 sum::return#0 ] ( main:0 [ main::s1#0 sum::return#0 ] ) //SEG15 [11] phi from main::@1 to sum [phi:main::@1->sum] - //SEG16 [11] phi (byte) sum::b#3 = (byte) 4 [phi:main::@1->sum#0] -- aby=coby1 + //SEG16 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 4 [phi:main::@1->sum#0] -- aby=coby1 lda #4 - //SEG17 [11] phi (byte) sum::a#3 = (byte) 3 [phi:main::@1->sum#1] -- yby=coby1 + //SEG17 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 3 [phi:main::@1->sum#1] -- yby=coby1 ldy #3 jsr sum //SEG18 main::@2 @@ -1157,9 +1157,9 @@ main: { tax //SEG20 [6] call sum param-assignment [ main::s1#0 sum::return#0 main::s2#0 ] ( main:0 [ main::s1#0 sum::return#0 main::s2#0 ] ) //SEG21 [11] phi from main::@2 to sum [phi:main::@2->sum] - //SEG22 [11] phi (byte) sum::b#3 = (byte) 13 [phi:main::@2->sum#0] -- aby=coby1 + //SEG22 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 13 [phi:main::@2->sum#0] -- aby=coby1 lda #$d - //SEG23 [11] phi (byte) sum::a#3 = (byte) 9 [phi:main::@2->sum#1] -- yby=coby1 + //SEG23 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 9 [phi:main::@2->sum#1] -- yby=coby1 ldy #9 jsr sum //SEG24 main::@3 @@ -1241,9 +1241,9 @@ main: { .label s3 = 3 //SEG8 [2] call sum param-assignment [ sum::return#0 ] ( main:0 [ sum::return#0 ] ) //SEG9 [11] phi from main to sum [phi:main->sum] - //SEG10 [11] phi (byte) sum::b#3 = (byte) 2 [phi:main->sum#0] -- aby=coby1 + //SEG10 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 2 [phi:main->sum#0] -- aby=coby1 lda #2 - //SEG11 [11] phi (byte) sum::a#3 = (byte) 1 [phi:main->sum#1] -- yby=coby1 + //SEG11 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 1 [phi:main->sum#1] -- yby=coby1 ldy #1 jsr sum //SEG12 main::@1 @@ -1251,9 +1251,9 @@ main: { sta s1 //SEG14 [4] call sum param-assignment [ main::s1#0 sum::return#0 ] ( main:0 [ main::s1#0 sum::return#0 ] ) //SEG15 [11] phi from main::@1 to sum [phi:main::@1->sum] - //SEG16 [11] phi (byte) sum::b#3 = (byte) 4 [phi:main::@1->sum#0] -- aby=coby1 + //SEG16 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 4 [phi:main::@1->sum#0] -- aby=coby1 lda #4 - //SEG17 [11] phi (byte) sum::a#3 = (byte) 3 [phi:main::@1->sum#1] -- yby=coby1 + //SEG17 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 3 [phi:main::@1->sum#1] -- yby=coby1 ldy #3 jsr sum //SEG18 main::@2 @@ -1261,9 +1261,9 @@ main: { tax //SEG20 [6] call sum param-assignment [ main::s1#0 sum::return#0 main::s2#0 ] ( main:0 [ main::s1#0 sum::return#0 main::s2#0 ] ) //SEG21 [11] phi from main::@2 to sum [phi:main::@2->sum] - //SEG22 [11] phi (byte) sum::b#3 = (byte) 13 [phi:main::@2->sum#0] -- aby=coby1 + //SEG22 [11] phi (byte) sum::b#3 = (byte/signed byte/word/signed word) 13 [phi:main::@2->sum#0] -- aby=coby1 lda #$d - //SEG23 [11] phi (byte) sum::a#3 = (byte) 9 [phi:main::@2->sum#1] -- yby=coby1 + //SEG23 [11] phi (byte) sum::a#3 = (byte/signed byte/word/signed word) 9 [phi:main::@2->sum#1] -- yby=coby1 ldy #9 jsr sum //SEG24 main::@3 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/useglobal.cfg b/src/main/java/dk/camelot64/kickc/test/ref/useglobal.cfg index 9ba14f68a..6b010128c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/useglobal.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/useglobal.cfg @@ -5,7 +5,7 @@ to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] ( main:0 [ ] ) + [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main [2] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/useglobal.log b/src/main/java/dk/camelot64/kickc/test/ref/useglobal.log index 75c6f2754..a66e5b841 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/useglobal.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/useglobal.log @@ -4,9 +4,9 @@ void main() { *SCREEN = 1; } PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 proc (void()) main() - *((byte*) SCREEN) ← (byte) 1 + *((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1 main::@return: return endproc // main() @@ -19,10 +19,10 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from - *((byte*) SCREEN) ← (byte) 1 + *((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1 to:main::@return main::@return: scope:[main] from main return @@ -36,10 +36,10 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - *((byte*) SCREEN) ← (byte) 1 + *((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1 to:main::@return main::@return: scope:[main] from main return @@ -55,11 +55,11 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) - *((byte*) SCREEN#1) ← (byte) 1 + *((byte*) SCREEN#1) ← (byte/signed byte/word/signed word) 1 to:main::@return main::@return: scope:[main] from main return @@ -74,11 +74,11 @@ main::@return: scope:[main] from main CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) - *((byte*) SCREEN#1) ← (byte) 1 + *((byte*) SCREEN#1) ← (byte/signed byte/word/signed word) 1 to:main::@return main::@return: scope:[main] from main return @@ -107,11 +107,11 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) - *((byte*) SCREEN#1) ← (byte) 1 + *((byte*) SCREEN#1) ← (byte/signed byte/word/signed word) 1 to:main::@return main::@return: scope:[main] from main return @@ -126,10 +126,10 @@ Alias (byte*) SCREEN#0 = (byte*) SCREEN#1 (byte*) SCREEN#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 to:@1 main: scope:[main] from @1 - *((byte*) SCREEN#0) ← (byte) 1 + *((byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 to:main::@return main::@return: scope:[main] from main return @@ -145,7 +145,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - *((const byte*) SCREEN#0) ← (byte) 1 + *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 to:main::@return main::@return: scope:[main] from main return @@ -160,7 +160,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (void()) main() (label) main::@return @@ -174,7 +174,7 @@ CONTROL FLOW GRAPH - PHI LIFTED to:@end @end: scope:[] from @1 main: scope:[main] from @1 - *((const byte*) SCREEN#0) ← (byte) 1 + *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 to:main::@return main::@return: scope:[main] from main return @@ -192,7 +192,7 @@ CONTROL FLOW GRAPH - LIVE RANGES FOUND to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] + [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] to:main::@return main::@return: scope:[main] from main [2] return [ ] @@ -210,7 +210,7 @@ CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] + [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] to:main::@return main::@return: scope:[main] from main [2] return [ ] @@ -224,7 +224,7 @@ CONTROL FLOW GRAPH - PHI MEM COALESCED to:@end @end: scope:[] from @1 main: scope:[main] from @1 - [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] ( main:0 [ ] ) + [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) to:main::@return main::@return: scope:[main] from main [2] return [ ] ( main:0 [ ] ) @@ -233,9 +233,9 @@ main::@return: scope:[main] from main DOMINATORS @begin dominated by @begin @1 dominated by @1 @begin -@end dominated by @1 @end @begin +@end dominated by @1 @begin @end main dominated by @1 @begin main -main::@return dominated by @1 main::@return @begin main +main::@return dominated by main::@return @1 @begin main NATURAL LOOPS @@ -269,7 +269,7 @@ b1: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN jmp breturn @@ -280,7 +280,7 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] ( main:0 [ ] ) always clobbers reg byte a +Statement [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] @@ -309,7 +309,7 @@ b1: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN //SEG8 main::@return @@ -336,7 +336,7 @@ b1: bend: //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN //SEG8 main::@return @@ -363,7 +363,7 @@ ASSEMBLER //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN //SEG8 main::@return @@ -376,7 +376,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@return @@ -395,7 +395,7 @@ FINAL CODE //SEG5 @end //SEG6 main main: { - //SEG7 [1] *((const byte*) SCREEN#0) ← (byte) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 + //SEG7 [1] *((const byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:0 [ ] ) -- _deref_cowo1=coby2 lda #1 sta SCREEN //SEG8 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/useglobal.sym b/src/main/java/dk/camelot64/kickc/test/ref/useglobal.sym index 03be8944c..8d3a55e6a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/useglobal.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/useglobal.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (void()) main() (label) main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg index 71d3dedca..6d24cb559 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg @@ -21,64 +21,64 @@ main::@return: scope:[main] from main::@5 [6] return [ ] ( main:0 [ ] ) to:@return animate: scope:[animate] from main::@4 - [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) - [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) - [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) - [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) - [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) + [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) + [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) + [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) + [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) + [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) to:animate::@7 animate::@7: scope:[animate] from animate - [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) + [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) - [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) - [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) - [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) - [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) + [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) + [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) + [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) + [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) + [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) to:animate::@8 animate::@8: scope:[animate] from animate::@1 - [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) + [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) - [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) - [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) - [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) - [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) + [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) + [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) + [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) + [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) + [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) to:animate::@9 animate::@9: scope:[animate] from animate::@2 - [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) + [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) - [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) - [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) - [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) - [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) + [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) + [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) + [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) + [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) + [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) to:animate::@10 animate::@10: scope:[animate] from animate::@3 - [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) + [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) - [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) - [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) - [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) - [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) + [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) + [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) + [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) + [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) + [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) to:animate::@11 animate::@11: scope:[animate] from animate::@4 - [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) - [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) - [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) - [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) - [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) - [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) + [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) + [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) + [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) + [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) + [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) + [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) to:animate::@12 animate::@12: scope:[animate] from animate::@11 - [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) - [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) - [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) + [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) + [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) + [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 [45] return [ ] ( main:0::animate:4 [ ] ) @@ -88,10 +88,10 @@ render: scope:[render] from main::@1 to:render::@1 render::@1: scope:[render] from render render::@3 [47] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) [ render::y#4 render::colline#5 ] ( main:0::render:3 [ render::y#4 render::colline#5 ] ) - [47] (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] ( main:0::render:3 [ render::y#4 render::colline#5 ] ) + [47] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] ( main:0::render:3 [ render::y#4 render::colline#5 ] ) to:render::@2 render::@2: scope:[render] from render::@1 render::@5 - [48] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 ] ) + [48] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 ] ) [49] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) [50] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) [51] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) @@ -100,12 +100,12 @@ render::@5: scope:[render] from render::@2 [52] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) [53] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 ] ) [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) - [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) + [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) to:render::@3 render::@3: scope:[render] from render::@5 - [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) + [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) - [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) + [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) to:render::@return render::@return: scope:[render] from render::@3 [59] return [ ] ( main:0::render:3 [ ] ) @@ -114,9 +114,9 @@ findcol: scope:[findcol] from render::@2 [60] phi() [ findcol::x#0 findcol::y#0 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@19 - [61] (byte) findcol::mincol#10 ← phi( findcol/(byte) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [61] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [61] (byte) findcol::i#10 ← phi( findcol/(byte) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [61] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [61] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [61] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) [62] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:0::render:3::findcol:51 [ 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::xp#0 ] ) [63] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:0::render:3::findcol:51 [ 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::xp#0 findcol::yp#0 ] ) [64] if((byte) findcol::x#0!=(byte) findcol::xp#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 ] ( main:0::render:3::findcol:51 [ 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::xp#0 findcol::yp#0 ] ) @@ -125,7 +125,7 @@ findcol::@9: scope:[findcol] from findcol::@1 [65] 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 ] ( main:0::render:3::findcol:51 [ 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::xp#0 findcol::yp#0 ] ) to:findcol::@return findcol::@return: scope:[findcol] from findcol::@8 findcol::@9 - [66] (byte) findcol::return#0 ← phi( findcol::@9/(byte) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#0 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) + [66] (byte) findcol::return#0 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#0 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) [67] return [ findcol::return#0 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) to:@return findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 @@ -175,7 +175,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 [86] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) [ initscreen::screen#2 ] ( main:0::initscreen:2 [ initscreen::screen#2 ] ) [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:0::initscreen:2 [ initscreen::screen#2 ] ) [88] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) - [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) + [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 [90] return [ ] ( main:0::initscreen:2 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log index 99ba12a5d..7c2935231 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log @@ -99,13 +99,13 @@ byte findcol(byte x, byte y) { Adding pre/post-modifier (byte*) initscreen::screen ← ++ (byte*) initscreen::screen Adding pre/post-modifier (byte) findcol::i ← ++ (byte) findcol::i PROGRAM - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) COLORS ← (word) 55296 - (byte) FILL ← (byte) 230 - (byte) numpoints ← (byte) 6 - (byte[]) XPOS ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL ← (byte/word/signed word) 230 + (byte) numpoints ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } proc (void()) main() (void~) main::$0 ← call initscreen main::@1: @@ -116,60 +116,60 @@ main::@return: return endproc // main() proc (void()) animate() - (byte~) animate::$0 ← (byte[]) XPOS *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS *idx (byte) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 (boolean~) animate::$4 ← ! (boolean~) animate::$3 if((boolean~) animate::$4) goto animate::@1 - *((byte[]) XPOS + (byte) 0) ← (byte) 0 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 animate::@1: - (byte~) animate::$5 ← (byte[]) YPOS *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS *idx (byte) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$9 ← ! (boolean~) animate::$8 if((boolean~) animate::$9) goto animate::@2 - *((byte[]) YPOS + (byte) 0) ← (byte) 0 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 animate::@2: - (byte~) animate::$10 ← (byte[]) XPOS *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS *idx (byte) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 (boolean~) animate::$14 ← ! (boolean~) animate::$13 if((boolean~) animate::$14) goto animate::@3 - *((byte[]) XPOS + (byte) 1) ← (byte) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 animate::@3: - (byte~) animate::$15 ← (byte[]) YPOS *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS *idx (byte) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$19 ← ! (boolean~) animate::$18 if((boolean~) animate::$19) goto animate::@4 - *((byte[]) YPOS + (byte) 2) ← (byte) 0 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 animate::@4: - (byte~) animate::$20 ← (byte[]) YPOS *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS *idx (byte) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 (boolean~) animate::$24 ← ! (boolean~) animate::$23 if((boolean~) animate::$24) goto animate::@5 - *((byte[]) YPOS + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS *idx (byte) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte) 40 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 (boolean~) animate::$29 ← ! (boolean~) animate::$28 if((boolean~) animate::$29) goto animate::@6 - (byte~) animate::$30 ← (byte[]) XPOS *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 animate::@6: animate::@5: animate::@return: @@ -180,7 +180,7 @@ proc (void()) initscreen() initscreen::@1: *((byte*) initscreen::screen) ← (byte) FILL (byte*) initscreen::screen ← ++ (byte*) initscreen::screen - (byte*~) initscreen::$0 ← (byte*) SCREEN + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 initscreen::@return: @@ -188,28 +188,28 @@ initscreen::@return: endproc // initscreen() proc (void()) render() (byte*) render::colline ← (byte*) COLORS - (byte) render::y ← (byte) 0 + (byte) render::y ← (byte/signed byte/word/signed word) 0 render::@1: - (byte) render::x ← (byte) 0 + (byte) render::x ← (byte/signed byte/word/signed word) 0 render::@2: (byte~) render::$0 ← call findcol (byte) render::x (byte) render::y (byte) render::col ← (byte~) render::$0 *((byte*) render::colline + (byte) render::x) ← (byte) render::col (byte) render::x ← ++ (byte) render::x - (boolean~) render::$1 ← (byte) render::x != (byte) 40 + (boolean~) render::$1 ← (byte) render::x != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 - (byte*~) render::$2 ← (byte*) render::colline + (byte) 40 + (byte*~) render::$2 ← (byte*) render::colline + (byte/signed byte/word/signed word) 40 (byte*) render::colline ← (byte*~) render::$2 (byte) render::y ← ++ (byte) render::y - (boolean~) render::$3 ← (byte) render::y != (byte) 25 + (boolean~) render::$3 ← (byte) render::y != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 render::@return: return endproc // render() proc (byte()) findcol((byte) findcol::x , (byte) findcol::y) - (byte) findcol::mindiff ← (byte) 255 - (byte) findcol::mincol ← (byte) 0 - (byte) findcol::i ← (byte) 0 + (byte) findcol::mindiff ← (byte/word/signed word) 255 + (byte) findcol::mincol ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i ← (byte/signed byte/word/signed word) 0 findcol::@1: (byte~) findcol::$0 ← (byte[]) XPOS *idx (byte) findcol::i (byte) findcol::xp ← (byte~) findcol::$0 @@ -221,7 +221,7 @@ findcol::@1: (boolean~) findcol::$4 ← (byte) findcol::y == (byte) findcol::yp (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 if((boolean~) findcol::$5) goto findcol::@3 - (byte) findcol::return ← (byte) 0 + (byte) findcol::return ← (byte/signed byte/word/signed word) 0 goto findcol::@return findcol::@3: findcol::@2: @@ -379,13 +379,13 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) COLORS ← (word) 55296 - (byte) FILL ← (byte) 230 - (byte) numpoints ← (byte) 6 - (byte[]) XPOS ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL ← (byte/word/signed word) 230 + (byte) numpoints ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@1 main: scope:[main] from (void~) main::$0 ← call initscreen @@ -403,80 +403,80 @@ main::@return: scope:[main] from main::@2 @1: scope:[] from @begin to:@2 animate: scope:[animate] from - (byte~) animate::$0 ← (byte[]) XPOS *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS *idx (byte) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 (boolean~) animate::$4 ← ! (boolean~) animate::$3 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS *idx (byte) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$9 ← ! (boolean~) animate::$8 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((byte[]) XPOS + (byte) 0) ← (byte) 0 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS *idx (byte) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 (boolean~) animate::$14 ← ! (boolean~) animate::$13 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((byte[]) YPOS + (byte) 0) ← (byte) 0 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS *idx (byte) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$19 ← ! (boolean~) animate::$18 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((byte[]) XPOS + (byte) 1) ← (byte) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS *idx (byte) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 (boolean~) animate::$24 ← ! (boolean~) animate::$23 if((boolean~) animate::$24) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((byte[]) YPOS + (byte) 2) ← (byte) 0 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@5: scope:[animate] from animate::@4 animate::@6 to:animate::@return animate::@11: scope:[animate] from animate::@4 - *((byte[]) YPOS + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS *idx (byte) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte) 40 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 (boolean~) animate::$29 ← ! (boolean~) animate::$28 if((boolean~) animate::$29) goto animate::@6 to:animate::@12 animate::@6: scope:[animate] from animate::@11 animate::@12 to:animate::@5 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@6 animate::@return: scope:[animate] from animate::@5 return @@ -489,7 +489,7 @@ initscreen: scope:[initscreen] from initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 *((byte*) initscreen::screen) ← (byte) FILL (byte*) initscreen::screen ← ++ (byte*) initscreen::screen - (byte*~) initscreen::$0 ← (byte*) SCREEN + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@2 @@ -502,24 +502,24 @@ initscreen::@return: scope:[initscreen] from initscreen::@2 to:@4 render: scope:[render] from (byte*) render::colline ← (byte*) COLORS - (byte) render::y ← (byte) 0 + (byte) render::y ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 - (byte) render::x ← (byte) 0 + (byte) render::x ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@2 (byte~) render::$0 ← call findcol (byte) render::x (byte) render::y (byte) render::col ← (byte~) render::$0 *((byte*) render::colline + (byte) render::x) ← (byte) render::col (byte) render::x ← ++ (byte) render::x - (boolean~) render::$1 ← (byte) render::x != (byte) 40 + (boolean~) render::$1 ← (byte) render::x != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@2 - (byte*~) render::$2 ← (byte*) render::colline + (byte) 40 + (byte*~) render::$2 ← (byte*) render::colline + (byte/signed byte/word/signed word) 40 (byte*) render::colline ← (byte*~) render::$2 (byte) render::y ← ++ (byte) render::y - (boolean~) render::$3 ← (byte) render::y != (byte) 25 + (boolean~) render::$3 ← (byte) render::y != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@4 render::@4: scope:[render] from render::@3 @@ -530,9 +530,9 @@ render::@return: scope:[render] from render::@4 @4: scope:[] from @3 to:@5 findcol: scope:[findcol] from - (byte) findcol::mindiff ← (byte) 255 - (byte) findcol::mincol ← (byte) 0 - (byte) findcol::i ← (byte) 0 + (byte) findcol::mindiff ← (byte/word/signed word) 255 + (byte) findcol::mincol ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte~) findcol::$0 ← (byte[]) XPOS *idx (byte) findcol::i @@ -556,7 +556,7 @@ findcol::@9: scope:[findcol] from findcol::@1 findcol::@3: scope:[findcol] from findcol::@11 findcol::@9 to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return ← (byte) 0 + (byte) findcol::return ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 findcol::@18 (byte) findcol::return ← (byte) findcol::return @@ -629,13 +629,13 @@ Removing empty block findcol::@15 Removing empty block findcol::@18 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) COLORS ← (word) 55296 - (byte) FILL ← (byte) 230 - (byte) numpoints ← (byte) 6 - (byte[]) XPOS ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL ← (byte/word/signed word) 230 + (byte) numpoints ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from (void~) main::$0 ← call initscreen @@ -649,80 +649,80 @@ main::@return: scope:[main] from main::@1 return to:@return animate: scope:[animate] from - (byte~) animate::$0 ← (byte[]) XPOS *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS *idx (byte) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 (boolean~) animate::$4 ← ! (boolean~) animate::$3 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS *idx (byte) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$9 ← ! (boolean~) animate::$8 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((byte[]) XPOS + (byte) 0) ← (byte) 0 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS *idx (byte) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 (boolean~) animate::$14 ← ! (boolean~) animate::$13 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((byte[]) YPOS + (byte) 0) ← (byte) 0 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS *idx (byte) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$19 ← ! (boolean~) animate::$18 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((byte[]) XPOS + (byte) 1) ← (byte) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS *idx (byte) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 (boolean~) animate::$24 ← ! (boolean~) animate::$23 if((boolean~) animate::$24) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((byte[]) YPOS + (byte) 2) ← (byte) 0 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@5: scope:[animate] from animate::@4 to:animate::@return animate::@11: scope:[animate] from animate::@4 - *((byte[]) YPOS + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS *idx (byte) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte) 40 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 (boolean~) animate::$29 ← ! (boolean~) animate::$28 if((boolean~) animate::$29) goto animate::@6 to:animate::@12 animate::@6: scope:[animate] from animate::@11 to:animate::@return animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@12 animate::@5 animate::@6 return @@ -733,7 +733,7 @@ initscreen: scope:[initscreen] from initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 *((byte*) initscreen::screen) ← (byte) FILL (byte*) initscreen::screen ← ++ (byte*) initscreen::screen - (byte*~) initscreen::$0 ← (byte*) SCREEN + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -742,33 +742,33 @@ initscreen::@return: scope:[initscreen] from initscreen::@1 to:@return render: scope:[render] from (byte*) render::colline ← (byte*) COLORS - (byte) render::y ← (byte) 0 + (byte) render::y ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 - (byte) render::x ← (byte) 0 + (byte) render::x ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@2 (byte~) render::$0 ← call findcol (byte) render::x (byte) render::y (byte) render::col ← (byte~) render::$0 *((byte*) render::colline + (byte) render::x) ← (byte) render::col (byte) render::x ← ++ (byte) render::x - (boolean~) render::$1 ← (byte) render::x != (byte) 40 + (boolean~) render::$1 ← (byte) render::x != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@2 - (byte*~) render::$2 ← (byte*) render::colline + (byte) 40 + (byte*~) render::$2 ← (byte*) render::colline + (byte/signed byte/word/signed word) 40 (byte*) render::colline ← (byte*~) render::$2 (byte) render::y ← ++ (byte) render::y - (boolean~) render::$3 ← (byte) render::y != (byte) 25 + (boolean~) render::$3 ← (byte) render::y != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return to:@return findcol: scope:[findcol] from - (byte) findcol::mindiff ← (byte) 255 - (byte) findcol::mincol ← (byte) 0 - (byte) findcol::i ← (byte) 0 + (byte) findcol::mindiff ← (byte/word/signed word) 255 + (byte) findcol::mincol ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte~) findcol::$0 ← (byte[]) XPOS *idx (byte) findcol::i @@ -792,7 +792,7 @@ findcol::@9: scope:[findcol] from findcol::@1 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return ← (byte) 0 + (byte) findcol::return ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return ← (byte) findcol::return @@ -848,13 +848,13 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 + (byte*) SCREEN ← (word/signed word) 1024 (byte*) COLORS ← (word) 55296 - (byte) FILL ← (byte) 230 - (byte) numpoints ← (byte) 6 - (byte[]) XPOS ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL ← (byte/word/signed word) 230 + (byte) numpoints ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 call initscreen param-assignment @@ -874,80 +874,80 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (byte[]) XPOS *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS *idx (byte) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 (boolean~) animate::$4 ← ! (boolean~) animate::$3 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS *idx (byte) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$9 ← ! (boolean~) animate::$8 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((byte[]) XPOS + (byte) 0) ← (byte) 0 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS *idx (byte) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 (boolean~) animate::$14 ← ! (boolean~) animate::$13 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((byte[]) YPOS + (byte) 0) ← (byte) 0 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS *idx (byte) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$19 ← ! (boolean~) animate::$18 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((byte[]) XPOS + (byte) 1) ← (byte) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS *idx (byte) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 (boolean~) animate::$24 ← ! (boolean~) animate::$23 if((boolean~) animate::$24) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((byte[]) YPOS + (byte) 2) ← (byte) 0 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@5: scope:[animate] from animate::@4 to:animate::@return animate::@11: scope:[animate] from animate::@4 - *((byte[]) YPOS + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS *idx (byte) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte) 40 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 (boolean~) animate::$29 ← ! (boolean~) animate::$28 if((boolean~) animate::$29) goto animate::@6 to:animate::@12 animate::@6: scope:[animate] from animate::@11 to:animate::@return animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@12 animate::@5 animate::@6 return @@ -958,7 +958,7 @@ initscreen: scope:[initscreen] from main initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 *((byte*) initscreen::screen) ← (byte) FILL (byte*) initscreen::screen ← ++ (byte*) initscreen::screen - (byte*~) initscreen::$0 ← (byte*) SCREEN + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -967,10 +967,10 @@ initscreen::@return: scope:[initscreen] from initscreen::@1 to:@return render: scope:[render] from main::@1 (byte*) render::colline ← (byte*) COLORS - (byte) render::y ← (byte) 0 + (byte) render::y ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 - (byte) render::x ← (byte) 0 + (byte) render::x ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte) findcol::x ← (byte) render::x @@ -982,23 +982,23 @@ render::@5: scope:[render] from render::@2 (byte) render::col ← (byte~) render::$0 *((byte*) render::colline + (byte) render::x) ← (byte) render::col (byte) render::x ← ++ (byte) render::x - (boolean~) render::$1 ← (byte) render::x != (byte) 40 + (boolean~) render::$1 ← (byte) render::x != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*~) render::$2 ← (byte*) render::colline + (byte) 40 + (byte*~) render::$2 ← (byte*) render::colline + (byte/signed byte/word/signed word) 40 (byte*) render::colline ← (byte*~) render::$2 (byte) render::y ← ++ (byte) render::y - (boolean~) render::$3 ← (byte) render::y != (byte) 25 + (boolean~) render::$3 ← (byte) render::y != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return to:@return findcol: scope:[findcol] from render::@2 - (byte) findcol::mindiff ← (byte) 255 - (byte) findcol::mincol ← (byte) 0 - (byte) findcol::i ← (byte) 0 + (byte) findcol::mindiff ← (byte/word/signed word) 255 + (byte) findcol::mincol ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte~) findcol::$0 ← (byte[]) XPOS *idx (byte) findcol::i @@ -1022,7 +1022,7 @@ findcol::@9: scope:[findcol] from findcol::@1 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return ← (byte) 0 + (byte) findcol::return ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return ← (byte) findcol::return @@ -1093,13 +1093,13 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[]) XPOS#0 ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS#0 ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS#0 ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL#0 ← (byte/word/signed word) 230 + (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS#0 ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 (byte[]) COLS#22 ← phi( @5/(byte[]) COLS#24 ) @@ -1148,89 +1148,89 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#8 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#8 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 (boolean~) animate::$4 ← ! (boolean~) animate::$3 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#9 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#2 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#8 animate::@7/(byte[]) YPOS#9 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$9 ← ! (boolean~) animate::$8 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate (byte[]) YPOS#9 ← phi( animate/(byte[]) YPOS#8 ) (byte[]) XPOS#2 ← phi( animate/(byte[]) XPOS#1 ) - *((byte[]) XPOS#2 + (byte) 0) ← (byte) 0 + *((byte[]) XPOS#2 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#2 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#9 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS#3 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 (boolean~) animate::$14 ← ! (boolean~) animate::$13 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 (byte[]) XPOS#10 ← phi( animate::@1/(byte[]) XPOS#9 ) (byte[]) YPOS#2 ← phi( animate::@1/(byte[]) YPOS#1 ) - *((byte[]) YPOS#2 + (byte) 0) ← (byte) 0 + *((byte[]) YPOS#2 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#16 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#4 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#11 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS#3 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$19 ← ! (boolean~) animate::$18 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 (byte[]) YPOS#11 ← phi( animate::@2/(byte[]) YPOS#10 ) (byte[]) XPOS#4 ← phi( animate::@2/(byte[]) XPOS#3 ) - *((byte[]) XPOS#4 + (byte) 1) ← (byte) 40 + *((byte[]) XPOS#4 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#5 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS#4 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 (boolean~) animate::$24 ← ! (boolean~) animate::$23 if((boolean~) animate::$24) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 (byte[]) XPOS#15 ← phi( animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#5 ← phi( animate::@3/(byte[]) YPOS#3 ) - *((byte[]) YPOS#5 + (byte) 2) ← (byte) 0 + *((byte[]) YPOS#5 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@5: scope:[animate] from animate::@4 to:animate::@return animate::@11: scope:[animate] from animate::@4 (byte[]) XPOS#5 ← phi( animate::@4/(byte[]) XPOS#11 ) (byte[]) YPOS#6 ← phi( animate::@4/(byte[]) YPOS#4 ) - *((byte[]) YPOS#6 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS#5 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte) 40 + *((byte[]) YPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 (boolean~) animate::$29 ← ! (boolean~) animate::$28 if((boolean~) animate::$29) goto animate::@6 to:animate::@12 @@ -1238,9 +1238,9 @@ animate::@6: scope:[animate] from animate::@11 to:animate::@return animate::@12: scope:[animate] from animate::@11 (byte[]) XPOS#6 ← phi( animate::@11/(byte[]) XPOS#5 ) - (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS#6 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@12 animate::@5 animate::@6 return @@ -1256,7 +1256,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) *((byte*) initscreen::screen#2) ← (byte) FILL#1 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen#1 < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -1270,7 +1270,7 @@ render: scope:[render] from main::@1 (byte[]) XPOS#27 ← phi( main::@1/(byte[]) XPOS#14 ) (byte*) COLORS#1 ← phi( main::@1/(byte*) COLORS#2 ) (byte*) render::colline#0 ← (byte*) COLORS#1 - (byte) render::y#0 ← (byte) 0 + (byte) render::y#0 ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 (byte[]) COLS#15 ← phi( render/(byte[]) COLS#17 render::@3/(byte[]) COLS#18 ) @@ -1279,7 +1279,7 @@ render::@1: scope:[render] from render render::@3 (byte[]) XPOS#22 ← phi( render/(byte[]) XPOS#27 render::@3/(byte[]) XPOS#28 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 + (byte) render::x#0 ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte[]) COLS#14 ← phi( render::@1/(byte[]) COLS#15 render::@5/(byte[]) COLS#16 ) @@ -1306,7 +1306,7 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte~) render::$0 *((byte*) render::colline#2 + (byte) render::x#3) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#3 - (boolean~) render::$1 ← (byte) render::x#1 != (byte) 40 + (boolean~) render::$1 ← (byte) render::x#1 != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 @@ -1316,10 +1316,10 @@ render::@3: scope:[render] from render::@5 (byte[]) XPOS#28 ← phi( render::@5/(byte[]) XPOS#23 ) (byte) render::y#3 ← phi( render::@5/(byte) render::y#5 ) (byte*) render::colline#3 ← phi( render::@5/(byte*) render::colline#2 ) - (byte*~) render::$2 ← (byte*) render::colline#3 + (byte) 40 + (byte*~) render::$2 ← (byte*) render::colline#3 + (byte/signed byte/word/signed word) 40 (byte*) render::colline#1 ← (byte*~) render::$2 (byte) render::y#1 ← ++ (byte) render::y#3 - (boolean~) render::$3 ← (byte) render::y#1 != (byte) 25 + (boolean~) render::$3 ← (byte) render::y#1 != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 @@ -1332,9 +1332,9 @@ findcol: scope:[findcol] from render::@2 (byte) findcol::x#5 ← phi( render::@2/(byte) findcol::x#0 ) (byte[]) YPOS#12 ← phi( render::@2/(byte[]) YPOS#15 ) (byte[]) XPOS#12 ← phi( render::@2/(byte[]) XPOS#17 ) - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 + (byte) findcol::mindiff#0 ← (byte/word/signed word) 255 + (byte) findcol::mincol#0 ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i#0 ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#11 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#3 ) @@ -1400,7 +1400,7 @@ findcol::@3: scope:[findcol] from findcol::@9 (byte) findcol::x#7 ← phi( findcol::@9/(byte) findcol::x#8 ) to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return#1 ← (byte) 0 + (byte) findcol::return#1 ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return#5 ← phi( findcol::@10/(byte) findcol::return#1 findcol::@17/(byte) findcol::return#3 ) @@ -1547,13 +1547,13 @@ findcol::@17: scope:[findcol] from findcol::@8 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[]) XPOS#0 ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS#0 ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS#0 ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL#0 ← (byte/word/signed word) 230 + (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS#0 ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 (byte[]) COLS#22 ← phi( @5/(byte[]) COLS#24 ) @@ -1602,89 +1602,89 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#8 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#8 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 (boolean~) animate::$4 ← ! (boolean~) animate::$3 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#9 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#2 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#8 animate::@7/(byte[]) YPOS#9 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$9 ← ! (boolean~) animate::$8 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate (byte[]) YPOS#9 ← phi( animate/(byte[]) YPOS#8 ) (byte[]) XPOS#2 ← phi( animate/(byte[]) XPOS#1 ) - *((byte[]) XPOS#2 + (byte) 0) ← (byte) 0 + *((byte[]) XPOS#2 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#2 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#9 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS#3 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 (boolean~) animate::$14 ← ! (boolean~) animate::$13 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 (byte[]) XPOS#10 ← phi( animate::@1/(byte[]) XPOS#9 ) (byte[]) YPOS#2 ← phi( animate::@1/(byte[]) YPOS#1 ) - *((byte[]) YPOS#2 + (byte) 0) ← (byte) 0 + *((byte[]) YPOS#2 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#16 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#4 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#11 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS#3 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$19 ← ! (boolean~) animate::$18 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 (byte[]) YPOS#11 ← phi( animate::@2/(byte[]) YPOS#10 ) (byte[]) XPOS#4 ← phi( animate::@2/(byte[]) XPOS#3 ) - *((byte[]) XPOS#4 + (byte) 1) ← (byte) 40 + *((byte[]) XPOS#4 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#5 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS#4 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 (boolean~) animate::$24 ← ! (boolean~) animate::$23 if((boolean~) animate::$24) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 (byte[]) XPOS#15 ← phi( animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#5 ← phi( animate::@3/(byte[]) YPOS#3 ) - *((byte[]) YPOS#5 + (byte) 2) ← (byte) 0 + *((byte[]) YPOS#5 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@5: scope:[animate] from animate::@4 to:animate::@return animate::@11: scope:[animate] from animate::@4 (byte[]) XPOS#5 ← phi( animate::@4/(byte[]) XPOS#11 ) (byte[]) YPOS#6 ← phi( animate::@4/(byte[]) YPOS#4 ) - *((byte[]) YPOS#6 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS#5 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte) 40 + *((byte[]) YPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 (boolean~) animate::$29 ← ! (boolean~) animate::$28 if((boolean~) animate::$29) goto animate::@6 to:animate::@12 @@ -1692,9 +1692,9 @@ animate::@6: scope:[animate] from animate::@11 to:animate::@return animate::@12: scope:[animate] from animate::@11 (byte[]) XPOS#6 ← phi( animate::@11/(byte[]) XPOS#5 ) - (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS#6 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@12 animate::@5 animate::@6 return @@ -1710,7 +1710,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) *((byte*) initscreen::screen#2) ← (byte) FILL#1 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen#1 < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -1724,7 +1724,7 @@ render: scope:[render] from main::@1 (byte[]) XPOS#27 ← phi( main::@1/(byte[]) XPOS#14 ) (byte*) COLORS#1 ← phi( main::@1/(byte*) COLORS#2 ) (byte*) render::colline#0 ← (byte*) COLORS#1 - (byte) render::y#0 ← (byte) 0 + (byte) render::y#0 ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 (byte[]) COLS#15 ← phi( render/(byte[]) COLS#17 render::@3/(byte[]) COLS#18 ) @@ -1733,7 +1733,7 @@ render::@1: scope:[render] from render render::@3 (byte[]) XPOS#22 ← phi( render/(byte[]) XPOS#27 render::@3/(byte[]) XPOS#28 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 + (byte) render::x#0 ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte[]) COLS#14 ← phi( render::@1/(byte[]) COLS#15 render::@5/(byte[]) COLS#16 ) @@ -1761,7 +1761,7 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte~) render::$0 *((byte*) render::colline#2 + (byte) render::x#3) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#3 - (boolean~) render::$1 ← (byte) render::x#1 != (byte) 40 + (boolean~) render::$1 ← (byte) render::x#1 != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 @@ -1771,10 +1771,10 @@ render::@3: scope:[render] from render::@5 (byte[]) XPOS#28 ← phi( render::@5/(byte[]) XPOS#23 ) (byte) render::y#3 ← phi( render::@5/(byte) render::y#5 ) (byte*) render::colline#3 ← phi( render::@5/(byte*) render::colline#2 ) - (byte*~) render::$2 ← (byte*) render::colline#3 + (byte) 40 + (byte*~) render::$2 ← (byte*) render::colline#3 + (byte/signed byte/word/signed word) 40 (byte*) render::colline#1 ← (byte*~) render::$2 (byte) render::y#1 ← ++ (byte) render::y#3 - (boolean~) render::$3 ← (byte) render::y#1 != (byte) 25 + (boolean~) render::$3 ← (byte) render::y#1 != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 @@ -1787,9 +1787,9 @@ findcol: scope:[findcol] from render::@2 (byte) findcol::x#5 ← phi( render::@2/(byte) findcol::x#0 ) (byte[]) YPOS#12 ← phi( render::@2/(byte[]) YPOS#15 ) (byte[]) XPOS#12 ← phi( render::@2/(byte[]) XPOS#17 ) - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 + (byte) findcol::mindiff#0 ← (byte/word/signed word) 255 + (byte) findcol::mincol#0 ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i#0 ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#11 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#3 ) @@ -1855,7 +1855,7 @@ findcol::@3: scope:[findcol] from findcol::@9 (byte) findcol::x#7 ← phi( findcol::@9/(byte) findcol::x#8 ) to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return#1 ← (byte) 0 + (byte) findcol::return#1 ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return#5 ← phi( findcol::@10/(byte) findcol::return#1 findcol::@17/(byte) findcol::return#3 ) @@ -2394,13 +2394,13 @@ Culled Empty Block (label) @6 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[]) XPOS#0 ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS#0 ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS#0 ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL#0 ← (byte/word/signed word) 230 + (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS#0 ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 (byte[]) COLS#22 ← phi( @5/(byte[]) COLS#24 ) @@ -2449,95 +2449,95 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#8 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#8 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 (boolean~) animate::$4 ← ! (boolean~) animate::$3 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#9 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#2 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#8 animate::@7/(byte[]) YPOS#9 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$9 ← ! (boolean~) animate::$8 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate (byte[]) YPOS#9 ← phi( animate/(byte[]) YPOS#8 ) (byte[]) XPOS#2 ← phi( animate/(byte[]) XPOS#1 ) - *((byte[]) XPOS#2 + (byte) 0) ← (byte) 0 + *((byte[]) XPOS#2 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#2 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#9 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS#3 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 (boolean~) animate::$14 ← ! (boolean~) animate::$13 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 (byte[]) XPOS#10 ← phi( animate::@1/(byte[]) XPOS#9 ) (byte[]) YPOS#2 ← phi( animate::@1/(byte[]) YPOS#1 ) - *((byte[]) YPOS#2 + (byte) 0) ← (byte) 0 + *((byte[]) YPOS#2 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#16 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#4 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#11 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS#3 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 (boolean~) animate::$19 ← ! (boolean~) animate::$18 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 (byte[]) YPOS#11 ← phi( animate::@2/(byte[]) YPOS#10 ) (byte[]) XPOS#4 ← phi( animate::@2/(byte[]) XPOS#3 ) - *((byte[]) XPOS#4 + (byte) 1) ← (byte) 40 + *((byte[]) XPOS#4 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#5 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS#4 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 (boolean~) animate::$24 ← ! (boolean~) animate::$23 if((boolean~) animate::$24) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 (byte[]) XPOS#15 ← phi( animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#5 ← phi( animate::@3/(byte[]) YPOS#3 ) - *((byte[]) YPOS#5 + (byte) 2) ← (byte) 0 + *((byte[]) YPOS#5 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 (byte[]) XPOS#5 ← phi( animate::@4/(byte[]) XPOS#11 ) (byte[]) YPOS#6 ← phi( animate::@4/(byte[]) YPOS#4 ) - *((byte[]) YPOS#6 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS#5 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte) 40 + *((byte[]) YPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 (boolean~) animate::$29 ← ! (boolean~) animate::$28 if((boolean~) animate::$29) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 (byte[]) XPOS#6 ← phi( animate::@11/(byte[]) XPOS#5 ) - (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS#6 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -2553,7 +2553,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) *((byte*) initscreen::screen#2) ← (byte) FILL#1 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen#1 < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -2567,7 +2567,7 @@ render: scope:[render] from main::@1 (byte[]) XPOS#27 ← phi( main::@1/(byte[]) XPOS#14 ) (byte*) COLORS#1 ← phi( main::@1/(byte*) COLORS#2 ) (byte*) render::colline#0 ← (byte*) COLORS#1 - (byte) render::y#0 ← (byte) 0 + (byte) render::y#0 ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 (byte[]) COLS#15 ← phi( render/(byte[]) COLS#17 render::@3/(byte[]) COLS#18 ) @@ -2576,7 +2576,7 @@ render::@1: scope:[render] from render render::@3 (byte[]) XPOS#22 ← phi( render/(byte[]) XPOS#27 render::@3/(byte[]) XPOS#28 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 + (byte) render::x#0 ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte[]) COLS#14 ← phi( render::@1/(byte[]) COLS#15 render::@5/(byte[]) COLS#16 ) @@ -2604,7 +2604,7 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte~) render::$0 *((byte*) render::colline#2 + (byte) render::x#3) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#3 - (boolean~) render::$1 ← (byte) render::x#1 != (byte) 40 + (boolean~) render::$1 ← (byte) render::x#1 != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 @@ -2614,10 +2614,10 @@ render::@3: scope:[render] from render::@5 (byte[]) XPOS#28 ← phi( render::@5/(byte[]) XPOS#23 ) (byte) render::y#3 ← phi( render::@5/(byte) render::y#5 ) (byte*) render::colline#3 ← phi( render::@5/(byte*) render::colline#2 ) - (byte*~) render::$2 ← (byte*) render::colline#3 + (byte) 40 + (byte*~) render::$2 ← (byte*) render::colline#3 + (byte/signed byte/word/signed word) 40 (byte*) render::colline#1 ← (byte*~) render::$2 (byte) render::y#1 ← ++ (byte) render::y#3 - (boolean~) render::$3 ← (byte) render::y#1 != (byte) 25 + (boolean~) render::$3 ← (byte) render::y#1 != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 @@ -2630,9 +2630,9 @@ findcol: scope:[findcol] from render::@2 (byte) findcol::x#5 ← phi( render::@2/(byte) findcol::x#0 ) (byte[]) YPOS#12 ← phi( render::@2/(byte[]) YPOS#15 ) (byte[]) XPOS#12 ← phi( render::@2/(byte[]) XPOS#17 ) - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 + (byte) findcol::mindiff#0 ← (byte/word/signed word) 255 + (byte) findcol::mincol#0 ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i#0 ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#11 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#3 ) @@ -2698,7 +2698,7 @@ findcol::@3: scope:[findcol] from findcol::@9 (byte) findcol::x#7 ← phi( findcol::@9/(byte) findcol::x#8 ) to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return#1 ← (byte) 0 + (byte) findcol::return#1 ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return#5 ← phi( findcol::@10/(byte) findcol::return#1 findcol::@17/(byte) findcol::return#3 ) @@ -2841,12 +2841,12 @@ findcol::@17: scope:[findcol] from findcol::@8 to:@end @end: scope:[] from @5 -Inversing boolean not (boolean~) animate::$4 ← (byte~) animate::$2 != (byte) 40 from (boolean~) animate::$3 ← (byte~) animate::$2 == (byte) 40 -Inversing boolean not (boolean~) animate::$9 ← (byte~) animate::$7 != (byte) 25 from (boolean~) animate::$8 ← (byte~) animate::$7 == (byte) 25 -Inversing boolean not (boolean~) animate::$14 ← (byte~) animate::$12 != (byte) 255 from (boolean~) animate::$13 ← (byte~) animate::$12 == (byte) 255 -Inversing boolean not (boolean~) animate::$19 ← (byte~) animate::$17 != (byte) 25 from (boolean~) animate::$18 ← (byte~) animate::$17 == (byte) 25 -Inversing boolean not (boolean~) animate::$24 ← (byte~) animate::$22 != (byte) 255 from (boolean~) animate::$23 ← (byte~) animate::$22 == (byte) 255 -Inversing boolean not (boolean~) animate::$29 ← (byte~) animate::$27 < (byte) 40 from (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte) 40 +Inversing boolean not (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 from (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 +Inversing boolean not (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 from (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 +Inversing boolean not (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 from (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 +Inversing boolean not (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 from (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 +Inversing boolean not (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 from (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 +Inversing boolean not (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 from (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 Inversing boolean not (boolean~) findcol::$3 ← (byte) findcol::x#1 != (byte) findcol::xp#0 from (boolean~) findcol::$2 ← (byte) findcol::x#1 == (byte) findcol::xp#0 Inversing boolean not (boolean~) findcol::$7 ← (byte) findcol::x#2 >= (byte) findcol::xp#1 from (boolean~) findcol::$6 ← (byte) findcol::x#2 < (byte) findcol::xp#1 Inversing boolean not (boolean~) findcol::$5 ← (byte) findcol::y#1 != (byte) findcol::yp#1 from (boolean~) findcol::$4 ← (byte) findcol::y#1 == (byte) findcol::yp#1 @@ -2855,13 +2855,13 @@ Inversing boolean not (boolean~) findcol::$17 ← (byte) findcol::diff#6 >= (byt Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[]) XPOS#0 ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS#0 ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS#0 ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL#0 ← (byte/word/signed word) 230 + (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS#0 ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 (byte[]) COLS#22 ← phi( @5/(byte[]) COLS#24 ) @@ -2910,89 +2910,89 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#8 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#8 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#9 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#2 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#8 animate::@7/(byte[]) YPOS#9 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate (byte[]) YPOS#9 ← phi( animate/(byte[]) YPOS#8 ) (byte[]) XPOS#2 ← phi( animate/(byte[]) XPOS#1 ) - *((byte[]) XPOS#2 + (byte) 0) ← (byte) 0 + *((byte[]) XPOS#2 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#2 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#9 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS#3 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 (byte[]) XPOS#10 ← phi( animate::@1/(byte[]) XPOS#9 ) (byte[]) YPOS#2 ← phi( animate::@1/(byte[]) YPOS#1 ) - *((byte[]) YPOS#2 + (byte) 0) ← (byte) 0 + *((byte[]) YPOS#2 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#16 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#4 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#11 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS#3 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 (byte[]) YPOS#11 ← phi( animate::@2/(byte[]) YPOS#10 ) (byte[]) XPOS#4 ← phi( animate::@2/(byte[]) XPOS#3 ) - *((byte[]) XPOS#4 + (byte) 1) ← (byte) 40 + *((byte[]) XPOS#4 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#5 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS#4 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 if((boolean~) animate::$24) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 (byte[]) XPOS#15 ← phi( animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#5 ← phi( animate::@3/(byte[]) YPOS#3 ) - *((byte[]) YPOS#5 + (byte) 2) ← (byte) 0 + *((byte[]) YPOS#5 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 (byte[]) XPOS#5 ← phi( animate::@4/(byte[]) XPOS#11 ) (byte[]) YPOS#6 ← phi( animate::@4/(byte[]) YPOS#4 ) - *((byte[]) YPOS#6 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS#5 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte) 40 + *((byte[]) YPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 if((boolean~) animate::$29) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 (byte[]) XPOS#6 ← phi( animate::@11/(byte[]) XPOS#5 ) - (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS#6 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -3008,7 +3008,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte) FILL#1 ← phi( initscreen/(byte) FILL#2 initscreen::@1/(byte) FILL#1 ) *((byte*) initscreen::screen#2) ← (byte) FILL#1 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen#1 < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -3022,7 +3022,7 @@ render: scope:[render] from main::@1 (byte[]) XPOS#27 ← phi( main::@1/(byte[]) XPOS#14 ) (byte*) COLORS#1 ← phi( main::@1/(byte*) COLORS#2 ) (byte*) render::colline#0 ← (byte*) COLORS#1 - (byte) render::y#0 ← (byte) 0 + (byte) render::y#0 ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 (byte[]) COLS#15 ← phi( render/(byte[]) COLS#17 render::@3/(byte[]) COLS#18 ) @@ -3031,7 +3031,7 @@ render::@1: scope:[render] from render render::@3 (byte[]) XPOS#22 ← phi( render/(byte[]) XPOS#27 render::@3/(byte[]) XPOS#28 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 + (byte) render::x#0 ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte[]) COLS#14 ← phi( render::@1/(byte[]) COLS#15 render::@5/(byte[]) COLS#16 ) @@ -3059,7 +3059,7 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte~) render::$0 *((byte*) render::colline#2 + (byte) render::x#3) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#3 - (boolean~) render::$1 ← (byte) render::x#1 != (byte) 40 + (boolean~) render::$1 ← (byte) render::x#1 != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 @@ -3069,10 +3069,10 @@ render::@3: scope:[render] from render::@5 (byte[]) XPOS#28 ← phi( render::@5/(byte[]) XPOS#23 ) (byte) render::y#3 ← phi( render::@5/(byte) render::y#5 ) (byte*) render::colline#3 ← phi( render::@5/(byte*) render::colline#2 ) - (byte*~) render::$2 ← (byte*) render::colline#3 + (byte) 40 + (byte*~) render::$2 ← (byte*) render::colline#3 + (byte/signed byte/word/signed word) 40 (byte*) render::colline#1 ← (byte*~) render::$2 (byte) render::y#1 ← ++ (byte) render::y#3 - (boolean~) render::$3 ← (byte) render::y#1 != (byte) 25 + (boolean~) render::$3 ← (byte) render::y#1 != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 @@ -3085,9 +3085,9 @@ findcol: scope:[findcol] from render::@2 (byte) findcol::x#5 ← phi( render::@2/(byte) findcol::x#0 ) (byte[]) YPOS#12 ← phi( render::@2/(byte[]) YPOS#15 ) (byte[]) XPOS#12 ← phi( render::@2/(byte[]) XPOS#17 ) - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 + (byte) findcol::mindiff#0 ← (byte/word/signed word) 255 + (byte) findcol::mincol#0 ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i#0 ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#11 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#3 ) @@ -3150,7 +3150,7 @@ findcol::@3: scope:[findcol] from findcol::@9 (byte) findcol::x#7 ← phi( findcol::@9/(byte) findcol::x#8 ) to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return#1 ← (byte) 0 + (byte) findcol::return#1 ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return#5 ← phi( findcol::@10/(byte) findcol::return#1 findcol::@17/(byte) findcol::return#3 ) @@ -3378,13 +3378,13 @@ Alias (byte) findcol::mincol#2 = (byte) findcol::mincol#3 (byte) findcol::return Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[]) XPOS#0 ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS#0 ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS#0 ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL#0 ← (byte/word/signed word) 230 + (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS#0 ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 call initscreen param-assignment @@ -3409,78 +3409,78 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#10 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#1 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#14 animate::@7/(byte[]) YPOS#14 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((byte[]) XPOS#1 + (byte) 0) ← (byte) 0 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#1 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#10 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS#3 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte) 0 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#15 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#3 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#10 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS#3 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((byte[]) XPOS#3 + (byte) 1) ← (byte) 40 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#15 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#3 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS#4 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 if((boolean~) animate::$24) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((byte[]) YPOS#3 + (byte) 2) ← (byte) 0 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((byte[]) YPOS#4 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS#11 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS#11 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#11 *idx (byte) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte) 40 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS#11 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#11 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS#11 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 if((boolean~) animate::$29) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#11 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS#11 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS#11 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#11 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -3494,7 +3494,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte) FILL#1 ← phi( initscreen/(byte) FILL#0 initscreen::@1/(byte) FILL#1 ) *((byte*) initscreen::screen#2) ← (byte) FILL#1 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen#1 < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -3503,7 +3503,7 @@ initscreen::@return: scope:[initscreen] from initscreen::@1 to:@return render: scope:[render] from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#1 - (byte) render::y#0 ← (byte) 0 + (byte) render::y#0 ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 (byte[]) COLS#15 ← phi( render/(byte[]) COLS#17 render::@3/(byte[]) COLS#11 ) @@ -3512,7 +3512,7 @@ render::@1: scope:[render] from render render::@3 (byte[]) XPOS#22 ← phi( render/(byte[]) XPOS#1 render::@3/(byte[]) XPOS#12 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 + (byte) render::x#0 ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte[]) COLS#11 ← phi( render::@1/(byte[]) COLS#15 render::@5/(byte[]) COLS#11 ) @@ -3530,22 +3530,22 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - (boolean~) render::$1 ← (byte) render::x#1 != (byte) 40 + (boolean~) render::$1 ← (byte) render::x#1 != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#2 - (boolean~) render::$3 ← (byte) render::y#1 != (byte) 25 + (boolean~) render::$3 ← (byte) render::y#1 != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return to:@return findcol: scope:[findcol] from render::@2 - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 + (byte) findcol::mindiff#0 ← (byte/word/signed word) 255 + (byte) findcol::mincol#0 ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i#0 ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#11 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) @@ -3584,7 +3584,7 @@ findcol::@9: scope:[findcol] from findcol::@1 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return#1 ← (byte) 0 + (byte) findcol::return#1 ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return#0 ← phi( findcol::@10/(byte) findcol::return#1 findcol::@17/(byte) findcol::mincol#2 ) @@ -3678,13 +3678,13 @@ Alias (byte) findcol::mincol#10 = (byte) findcol::mincol#11 (byte) findcol::minc Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[]) XPOS#0 ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS#0 ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS#0 ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL#0 ← (byte/word/signed word) 230 + (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS#0 ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 call initscreen param-assignment @@ -3709,70 +3709,70 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((byte[]) XPOS#1 + (byte) 0) ← (byte) 0 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS#1 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS#1 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#1 *idx (byte) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte) 0 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS#1 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS#1 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#1 *idx (byte) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((byte[]) XPOS#1 + (byte) 1) ← (byte) 40 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS#1 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS#1 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#1 *idx (byte) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 if((boolean~) animate::$24) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((byte[]) YPOS#1 + (byte) 2) ← (byte) 0 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((byte[]) YPOS#1 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS#1 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS#1 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#1 *idx (byte) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte) 40 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 if((boolean~) animate::$29) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#1 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS#1 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -3786,7 +3786,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte) FILL#1 ← phi( initscreen/(byte) FILL#0 initscreen::@1/(byte) FILL#1 ) *((byte*) initscreen::screen#2) ← (byte) FILL#1 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen#1 < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -3795,7 +3795,7 @@ initscreen::@return: scope:[initscreen] from initscreen::@1 to:@return render: scope:[render] from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#1 - (byte) render::y#0 ← (byte) 0 + (byte) render::y#0 ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 (byte[]) COLS#15 ← phi( render/(byte[]) COLS#17 render::@3/(byte[]) COLS#11 ) @@ -3804,7 +3804,7 @@ render::@1: scope:[render] from render render::@3 (byte[]) XPOS#22 ← phi( render/(byte[]) XPOS#1 render::@3/(byte[]) XPOS#12 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 + (byte) render::x#0 ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte[]) COLS#11 ← phi( render::@1/(byte[]) COLS#15 render::@5/(byte[]) COLS#11 ) @@ -3822,22 +3822,22 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - (boolean~) render::$1 ← (byte) render::x#1 != (byte) 40 + (boolean~) render::$1 ← (byte) render::x#1 != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#2 - (boolean~) render::$3 ← (byte) render::y#1 != (byte) 25 + (boolean~) render::$3 ← (byte) render::y#1 != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return to:@return findcol: scope:[findcol] from render::@2 - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 + (byte) findcol::mindiff#0 ← (byte/word/signed word) 255 + (byte) findcol::mincol#0 ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i#0 ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) @@ -3865,7 +3865,7 @@ findcol::@9: scope:[findcol] from findcol::@1 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return#1 ← (byte) 0 + (byte) findcol::return#1 ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return#0 ← phi( findcol::@10/(byte) findcol::return#1 findcol::@17/(byte) findcol::mincol#2 ) @@ -3939,13 +3939,13 @@ Self Phi Eliminated (byte[]) COLS#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[]) XPOS#0 ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS#0 ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS#0 ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL#0 ← (byte/word/signed word) 230 + (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS#0 ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 call initscreen param-assignment @@ -3970,70 +3970,70 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS#1 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((byte[]) XPOS#1 + (byte) 0) ← (byte) 0 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS#1 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS#1 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#1 *idx (byte) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((byte[]) YPOS#1 + (byte) 0) ← (byte) 0 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS#1 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS#1 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#1 *idx (byte) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((byte[]) XPOS#1 + (byte) 1) ← (byte) 40 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS#1 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS#1 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#1 *idx (byte) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 if((boolean~) animate::$24) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((byte[]) YPOS#1 + (byte) 2) ← (byte) 0 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((byte[]) YPOS#1 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS#1 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS#1 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#1 *idx (byte) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte) 40 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 if((boolean~) animate::$29) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#1 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS#1 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -4047,7 +4047,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte) FILL#1 ← phi( initscreen/(byte) FILL#0 ) *((byte*) initscreen::screen#2) ← (byte) FILL#1 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN#2 + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen#1 < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -4056,7 +4056,7 @@ initscreen::@return: scope:[initscreen] from initscreen::@1 to:@return render: scope:[render] from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#1 - (byte) render::y#0 ← (byte) 0 + (byte) render::y#0 ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 (byte[]) COLS#15 ← phi( render/(byte[]) COLS#17 render::@3/(byte[]) COLS#11 ) @@ -4065,7 +4065,7 @@ render::@1: scope:[render] from render render::@3 (byte[]) XPOS#22 ← phi( render/(byte[]) XPOS#1 render::@3/(byte[]) XPOS#12 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 + (byte) render::x#0 ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte[]) COLS#11 ← phi( render::@1/(byte[]) COLS#15 ) @@ -4083,22 +4083,22 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#2 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - (boolean~) render::$1 ← (byte) render::x#1 != (byte) 40 + (boolean~) render::$1 ← (byte) render::x#1 != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#2 - (boolean~) render::$3 ← (byte) render::y#1 != (byte) 25 + (boolean~) render::$3 ← (byte) render::y#1 != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return to:@return findcol: scope:[findcol] from render::@2 - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 + (byte) findcol::mindiff#0 ← (byte/word/signed word) 255 + (byte) findcol::mincol#0 ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i#0 ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) @@ -4126,7 +4126,7 @@ findcol::@9: scope:[findcol] from findcol::@1 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return#1 ← (byte) 0 + (byte) findcol::return#1 ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return#0 ← phi( findcol::@10/(byte) findcol::return#1 findcol::@17/(byte) findcol::mincol#2 ) @@ -4195,13 +4195,13 @@ Redundant Phi (byte[]) COLS#1 (byte[]) COLS#11 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[]) XPOS#0 ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS#0 ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS#0 ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL#0 ← (byte/word/signed word) 230 + (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS#0 ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 call initscreen param-assignment @@ -4221,70 +4221,70 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (byte[]) XPOS#0 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS#0 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#0 *idx (byte) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte) 40 + (byte~) animate::$0 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 if((boolean~) animate::$4) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS#0 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS#0 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#0 *idx (byte) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte) 25 + (byte~) animate::$5 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 + (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$9) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((byte[]) XPOS#0 + (byte) 0) ← (byte) 0 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS#0 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS#0 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#0 *idx (byte) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte) 255 + (byte~) animate::$10 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 + (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 if((boolean~) animate::$14) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((byte[]) YPOS#0 + (byte) 0) ← (byte) 0 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS#0 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS#0 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#0 *idx (byte) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte) 25 + (byte~) animate::$15 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 + (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 if((boolean~) animate::$19) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((byte[]) XPOS#0 + (byte) 1) ← (byte) 40 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS#0 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS#0 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#0 *idx (byte) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte) 255 + (byte~) animate::$20 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 if((boolean~) animate::$24) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((byte[]) YPOS#0 + (byte) 2) ← (byte) 0 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((byte[]) YPOS#0 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS#0 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS#0 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#0 *idx (byte) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte) 40 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 if((boolean~) animate::$29) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#0 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS#0 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -4296,7 +4296,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) *((byte*) initscreen::screen#2) ← (byte) FILL#0 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (byte*) SCREEN#0 + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN#0 + (word/signed word) 1000 (boolean~) initscreen::$1 ← (byte*) initscreen::screen#1 < (byte*~) initscreen::$0 if((boolean~) initscreen::$1) goto initscreen::@1 to:initscreen::@return @@ -4305,7 +4305,7 @@ initscreen::@return: scope:[initscreen] from initscreen::@1 to:@return render: scope:[render] from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#0 - (byte) render::y#0 ← (byte) 0 + (byte) render::y#0 ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 (byte[]) COLS#15 ← phi( render/(byte[]) COLS#0 render::@3/(byte[]) COLS#15 ) @@ -4314,7 +4314,7 @@ render::@1: scope:[render] from render render::@3 (byte[]) XPOS#22 ← phi( render/(byte[]) XPOS#0 render::@3/(byte[]) XPOS#22 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 + (byte) render::x#0 ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte) render::x#2 ← phi( render::@1/(byte) render::x#0 render::@5/(byte) render::x#1 ) @@ -4326,22 +4326,22 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - (boolean~) render::$1 ← (byte) render::x#1 != (byte) 40 + (boolean~) render::$1 ← (byte) render::x#1 != (byte/signed byte/word/signed word) 40 if((boolean~) render::$1) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - (boolean~) render::$3 ← (byte) render::y#1 != (byte) 25 + (boolean~) render::$3 ← (byte) render::y#1 != (byte/signed byte/word/signed word) 25 if((boolean~) render::$3) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return to:@return findcol: scope:[findcol] from render::@2 - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 + (byte) findcol::mindiff#0 ← (byte/word/signed word) 255 + (byte) findcol::mincol#0 ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i#0 ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) @@ -4363,7 +4363,7 @@ findcol::@9: scope:[findcol] from findcol::@1 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return#1 ← (byte) 0 + (byte) findcol::return#1 ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return#0 ← phi( findcol::@10/(byte) findcol::return#1 findcol::@17/(byte) findcol::mincol#2 ) @@ -4410,15 +4410,15 @@ findcol::@17: scope:[findcol] from findcol::@8 to:@end @end: scope:[] from @5 -Simple Condition (boolean~) animate::$4 if((byte~) animate::$2!=(byte) 40) goto animate::@1 -Simple Condition (boolean~) animate::$9 if((byte~) animate::$7!=(byte) 25) goto animate::@2 -Simple Condition (boolean~) animate::$14 if((byte~) animate::$12!=(byte) 255) goto animate::@3 -Simple Condition (boolean~) animate::$19 if((byte~) animate::$17!=(byte) 25) goto animate::@4 -Simple Condition (boolean~) animate::$24 if((byte~) animate::$22!=(byte) 255) goto animate::@return -Simple Condition (boolean~) animate::$29 if((byte~) animate::$27<(byte) 40) goto animate::@return +Simple Condition (boolean~) animate::$4 if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 +Simple Condition (boolean~) animate::$9 if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 +Simple Condition (boolean~) animate::$14 if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 +Simple Condition (boolean~) animate::$19 if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 +Simple Condition (boolean~) animate::$24 if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return +Simple Condition (boolean~) animate::$29 if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return Simple Condition (boolean~) initscreen::$1 if((byte*) initscreen::screen#1<(byte*~) initscreen::$0) goto initscreen::@1 -Simple Condition (boolean~) render::$1 if((byte) render::x#1!=(byte) 40) goto render::@2 -Simple Condition (boolean~) render::$3 if((byte) render::y#1!=(byte) 25) goto render::@1 +Simple Condition (boolean~) render::$1 if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 +Simple Condition (boolean~) render::$3 if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 Simple Condition (boolean~) findcol::$3 if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 Simple Condition (boolean~) findcol::$7 if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 Simple Condition (boolean~) findcol::$5 if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@3 @@ -4428,13 +4428,13 @@ Simple Condition (boolean~) findcol::$19 if((byte) findcol::i#1<(byte) numpoints Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 + (byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) COLORS#0 ← (word) 55296 - (byte) FILL#0 ← (byte) 230 - (byte) numpoints#0 ← (byte) 6 - (byte[]) XPOS#0 ← { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } - (byte[]) YPOS#0 ← { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } - (byte[]) COLS#0 ← { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } + (byte) FILL#0 ← (byte/word/signed word) 230 + (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 + (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } + (byte[]) YPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } + (byte[]) COLS#0 ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } to:@5 main: scope:[main] from @5 call initscreen param-assignment @@ -4454,64 +4454,64 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (byte[]) XPOS#0 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((byte[]) XPOS#0 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#0 *idx (byte) 0 - if((byte~) animate::$2!=(byte) 40) goto animate::@1 + (byte~) animate::$0 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 + if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS#0 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((byte[]) YPOS#0 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#0 *idx (byte) 0 - if((byte~) animate::$7!=(byte) 25) goto animate::@2 + (byte~) animate::$5 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 + if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((byte[]) XPOS#0 + (byte) 0) ← (byte) 0 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS#0 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((byte[]) XPOS#0 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#0 *idx (byte) 1 - if((byte~) animate::$12!=(byte) 255) goto animate::@3 + (byte~) animate::$10 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 + if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((byte[]) YPOS#0 + (byte) 0) ← (byte) 0 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS#0 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((byte[]) YPOS#0 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#0 *idx (byte) 2 - if((byte~) animate::$17!=(byte) 25) goto animate::@4 + (byte~) animate::$15 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 + if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((byte[]) XPOS#0 + (byte) 1) ← (byte) 40 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS#0 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((byte[]) YPOS#0 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#0 *idx (byte) 3 - if((byte~) animate::$22!=(byte) 255) goto animate::@return + (byte~) animate::$20 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 + if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((byte[]) YPOS#0 + (byte) 2) ← (byte) 0 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((byte[]) YPOS#0 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (byte[]) XPOS#0 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((byte[]) XPOS#0 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#0 *idx (byte) 3 - if((byte~) animate::$27<(byte) 40) goto animate::@return + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#0 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((byte[]) XPOS#0 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -4523,7 +4523,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) *((byte*) initscreen::screen#2) ← (byte) FILL#0 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (byte*) SCREEN#0 + (word) 1000 + (byte*~) initscreen::$0 ← (byte*) SCREEN#0 + (word/signed word) 1000 if((byte*) initscreen::screen#1<(byte*~) initscreen::$0) goto initscreen::@1 to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 @@ -4531,7 +4531,7 @@ initscreen::@return: scope:[initscreen] from initscreen::@1 to:@return render: scope:[render] from main::@1 (byte*) render::colline#0 ← (byte*) COLORS#0 - (byte) render::y#0 ← (byte) 0 + (byte) render::y#0 ← (byte/signed byte/word/signed word) 0 to:render::@1 render::@1: scope:[render] from render render::@3 (byte[]) COLS#15 ← phi( render/(byte[]) COLS#0 render::@3/(byte[]) COLS#15 ) @@ -4540,7 +4540,7 @@ render::@1: scope:[render] from render render::@3 (byte[]) XPOS#22 ← phi( render/(byte[]) XPOS#0 render::@3/(byte[]) XPOS#22 ) (byte*) render::colline#5 ← phi( render/(byte*) render::colline#0 render::@3/(byte*) render::colline#1 ) (byte) render::y#4 ← phi( render/(byte) render::y#0 render::@3/(byte) render::y#1 ) - (byte) render::x#0 ← (byte) 0 + (byte) render::x#0 ← (byte/signed byte/word/signed word) 0 to:render::@2 render::@2: scope:[render] from render::@1 render::@5 (byte) render::x#2 ← phi( render::@1/(byte) render::x#0 render::@5/(byte) render::x#1 ) @@ -4552,20 +4552,20 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - if((byte) render::x#1!=(byte) 40) goto render::@2 + if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - if((byte) render::y#1!=(byte) 25) goto render::@1 + if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return to:@return findcol: scope:[findcol] from render::@2 - (byte) findcol::mindiff#0 ← (byte) 255 - (byte) findcol::mincol#0 ← (byte) 0 - (byte) findcol::i#0 ← (byte) 0 + (byte) findcol::mindiff#0 ← (byte/word/signed word) 255 + (byte) findcol::mincol#0 ← (byte/signed byte/word/signed word) 0 + (byte) findcol::i#0 ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) @@ -4584,7 +4584,7 @@ findcol::@9: scope:[findcol] from findcol::@1 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 findcol::@10: scope:[findcol] from findcol::@9 - (byte) findcol::return#1 ← (byte) 0 + (byte) findcol::return#1 ← (byte/signed byte/word/signed word) 0 to:findcol::@return findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 (byte) findcol::return#0 ← phi( findcol::@10/(byte) findcol::return#1 findcol::@17/(byte) findcol::mincol#2 ) @@ -4663,64 +4663,64 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (const byte[]) XPOS#0 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((const byte[]) XPOS#0 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (const byte[]) XPOS#0 *idx (byte) 0 - if((byte~) animate::$2!=(byte) 40) goto animate::@1 + (byte~) animate::$0 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 + if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (const byte[]) YPOS#0 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((const byte[]) YPOS#0 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (const byte[]) YPOS#0 *idx (byte) 0 - if((byte~) animate::$7!=(byte) 25) goto animate::@2 + (byte~) animate::$5 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 + if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((const byte[]) XPOS#0 + (byte) 0) ← (byte) 0 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (const byte[]) XPOS#0 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((const byte[]) XPOS#0 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (const byte[]) XPOS#0 *idx (byte) 1 - if((byte~) animate::$12!=(byte) 255) goto animate::@3 + (byte~) animate::$10 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 + if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((const byte[]) YPOS#0 + (byte) 0) ← (byte) 0 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (const byte[]) YPOS#0 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((const byte[]) YPOS#0 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (const byte[]) YPOS#0 *idx (byte) 2 - if((byte~) animate::$17!=(byte) 25) goto animate::@4 + (byte~) animate::$15 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 + if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((const byte[]) XPOS#0 + (byte) 1) ← (byte) 40 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (const byte[]) YPOS#0 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((const byte[]) YPOS#0 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (const byte[]) YPOS#0 *idx (byte) 3 - if((byte~) animate::$22!=(byte) 255) goto animate::@return + (byte~) animate::$20 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 + if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((const byte[]) YPOS#0 + (byte) 2) ← (byte) 0 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((const byte[]) YPOS#0 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (const byte[]) XPOS#0 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((const byte[]) XPOS#0 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (const byte[]) XPOS#0 *idx (byte) 3 - if((byte~) animate::$27<(byte) 40) goto animate::@return + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (const byte[]) XPOS#0 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((const byte[]) XPOS#0 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -4732,7 +4732,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte*) initscreen::screen#2 ← phi( initscreen/(byte*) initscreen::screen#0 initscreen::@1/(byte*) initscreen::screen#1 ) *((byte*) initscreen::screen#2) ← (const byte) FILL#0 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - (byte*~) initscreen::$0 ← (const byte*) SCREEN#0 + (word) 1000 + (byte*~) initscreen::$0 ← (const byte*) SCREEN#0 + (word/signed word) 1000 if((byte*) initscreen::screen#1<(byte*~) initscreen::$0) goto initscreen::@1 to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 @@ -4759,12 +4759,12 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - if((byte) render::x#1!=(byte) 40) goto render::@2 + if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - if((byte) render::y#1!=(byte) 25) goto render::@1 + if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return @@ -4856,64 +4856,64 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (const byte[]) XPOS#0 *idx (byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((const byte[]) XPOS#0 + (byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (const byte[]) XPOS#0 *idx (byte) 0 - if((byte~) animate::$2!=(byte) 40) goto animate::@1 + (byte~) animate::$0 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 + if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (const byte[]) YPOS#0 *idx (byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((const byte[]) YPOS#0 + (byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (const byte[]) YPOS#0 *idx (byte) 0 - if((byte~) animate::$7!=(byte) 25) goto animate::@2 + (byte~) animate::$5 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 + if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((const byte[]) XPOS#0 + (byte) 0) ← (byte) 0 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (const byte[]) XPOS#0 *idx (byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((const byte[]) XPOS#0 + (byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (const byte[]) XPOS#0 *idx (byte) 1 - if((byte~) animate::$12!=(byte) 255) goto animate::@3 + (byte~) animate::$10 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 + if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((const byte[]) YPOS#0 + (byte) 0) ← (byte) 0 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (const byte[]) YPOS#0 *idx (byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((const byte[]) YPOS#0 + (byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (const byte[]) YPOS#0 *idx (byte) 2 - if((byte~) animate::$17!=(byte) 25) goto animate::@4 + (byte~) animate::$15 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 + if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((const byte[]) XPOS#0 + (byte) 1) ← (byte) 40 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (const byte[]) YPOS#0 *idx (byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((const byte[]) YPOS#0 + (byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (const byte[]) YPOS#0 *idx (byte) 3 - if((byte~) animate::$22!=(byte) 255) goto animate::@return + (byte~) animate::$20 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 + if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((const byte[]) YPOS#0 + (byte) 2) ← (byte) 0 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((const byte[]) YPOS#0 + (byte) 3) ← (byte) 25 - (byte~) animate::$25 ← (const byte[]) XPOS#0 *idx (byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((const byte[]) XPOS#0 + (byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (const byte[]) XPOS#0 *idx (byte) 3 - if((byte~) animate::$27<(byte) 40) goto animate::@return + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (const byte[]) XPOS#0 *idx (byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((const byte[]) XPOS#0 + (byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -4949,12 +4949,12 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - if((byte) render::x#1!=(byte) 40) goto render::@2 + if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - if((byte) render::y#1!=(byte) 25) goto render::@1 + if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return @@ -5068,64 +5068,64 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 - if((byte~) animate::$2!=(byte) 40) goto animate::@1 + (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 - if((byte~) animate::$7!=(byte) 25) goto animate::@2 + (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 - if((byte~) animate::$12!=(byte) 255) goto animate::@3 + (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 - if((byte~) animate::$17!=(byte) 25) goto animate::@4 + (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 - if((byte~) animate::$22!=(byte) 255) goto animate::@return + (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 - if((byte~) animate::$27<(byte) 40) goto animate::@return + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5161,12 +5161,12 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - if((byte) render::x#1!=(byte) 40) goto render::@2 + if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - if((byte) render::y#1!=(byte) 25) goto render::@1 + if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return @@ -5257,64 +5257,64 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 - if((byte~) animate::$2!=(byte) 40) goto animate::@1 + (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 - if((byte~) animate::$7!=(byte) 25) goto animate::@2 + (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 - if((byte~) animate::$12!=(byte) 255) goto animate::@3 + (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 - if((byte~) animate::$17!=(byte) 25) goto animate::@4 + (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 - if((byte~) animate::$22!=(byte) 255) goto animate::@return + (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 - if((byte~) animate::$27<(byte) 40) goto animate::@return + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5350,12 +5350,12 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - if((byte) render::x#1!=(byte) 40) goto render::@2 + if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - if((byte) render::y#1!=(byte) 25) goto render::@1 + if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return @@ -5443,64 +5443,64 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 - if((byte~) animate::$2!=(byte) 40) goto animate::@1 + (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 - if((byte~) animate::$7!=(byte) 25) goto animate::@2 + (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 - if((byte~) animate::$12!=(byte) 255) goto animate::@3 + (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 - if((byte~) animate::$17!=(byte) 25) goto animate::@4 + (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 - if((byte~) animate::$22!=(byte) 255) goto animate::@return + (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 - if((byte~) animate::$27<(byte) 40) goto animate::@return + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5536,12 +5536,12 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - if((byte) render::x#1!=(byte) 40) goto render::@2 + if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - if((byte) render::y#1!=(byte) 25) goto render::@1 + if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return @@ -5626,64 +5626,64 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 - if((byte~) animate::$2!=(byte) 40) goto animate::@1 + (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 - if((byte~) animate::$7!=(byte) 25) goto animate::@2 + (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 - if((byte~) animate::$12!=(byte) 255) goto animate::@3 + (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 - if((byte~) animate::$17!=(byte) 25) goto animate::@4 + (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 - if((byte~) animate::$22!=(byte) 255) goto animate::@return + (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 - if((byte~) animate::$27<(byte) 40) goto animate::@return + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5715,12 +5715,12 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - if((byte) render::x#1!=(byte) 40) goto render::@2 + if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - if((byte) render::y#1!=(byte) 25) goto render::@1 + if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return @@ -5806,15 +5806,15 @@ Inlining constant with var siblings (const byte) findcol::mincol#0 Inlining constant with var siblings (const byte) findcol::i#0 Inlining constant with var siblings (const byte) findcol::i#0 Inlining constant with var siblings (const byte) findcol::return#1 -Constant inlined initscreen::$0 = (const byte*) SCREEN#0+(word) 1000 -Constant inlined findcol::mincol#0 = (byte) 0 -Constant inlined initscreen::screen#0 = (const byte*) SCREEN#0 -Constant inlined findcol::return#1 = (byte) 0 -Constant inlined render::x#0 = (byte) 0 -Constant inlined findcol::i#0 = (byte) 0 -Constant inlined render::y#0 = (byte) 0 +Constant inlined findcol::i#0 = (byte/signed byte/word/signed word) 0 Constant inlined render::colline#0 = (const byte*) COLORS#0 -Constant inlined findcol::mindiff#0 = (byte) 255 +Constant inlined render::x#0 = (byte/signed byte/word/signed word) 0 +Constant inlined initscreen::screen#0 = (const byte*) SCREEN#0 +Constant inlined findcol::return#1 = (byte/signed byte/word/signed word) 0 +Constant inlined render::y#0 = (byte/signed byte/word/signed word) 0 +Constant inlined findcol::mincol#0 = (byte/signed byte/word/signed word) 0 +Constant inlined findcol::mindiff#0 = (byte/word/signed word) 255 +Constant inlined initscreen::$0 = (const byte*) SCREEN#0+(word/signed word) 1000 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -5835,64 +5835,64 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 - if((byte~) animate::$2!=(byte) 40) goto animate::@1 + (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 - if((byte~) animate::$7!=(byte) 25) goto animate::@2 + (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate - *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 - if((byte~) animate::$12!=(byte) 255) goto animate::@3 + (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 - if((byte~) animate::$17!=(byte) 25) goto animate::@4 + (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 - *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 - if((byte~) animate::$22!=(byte) 255) goto animate::@return + (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 - *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 - *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 - if((byte~) animate::$27<(byte) 40) goto animate::@return + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5903,7 +5903,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) *((byte*) initscreen::screen#2) ← (const byte) FILL#0 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 + if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 return @@ -5912,10 +5912,10 @@ render: scope:[render] from main::@1 to:render::@1 render::@1: scope:[render] from render render::@3 (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) - (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) + (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) to:render::@2 render::@2: scope:[render] from render::@1 render::@5 - (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) + (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) (byte) findcol::x#0 ← (byte) render::x#2 (byte) findcol::y#0 ← (byte) render::y#4 call findcol param-assignment @@ -5924,12 +5924,12 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - if((byte) render::x#1!=(byte) 40) goto render::@2 + if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - if((byte) render::y#1!=(byte) 25) goto render::@1 + if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 to:render::@return render::@return: scope:[render] from render::@3 return @@ -5937,9 +5937,9 @@ render::@return: scope:[render] from render::@3 findcol: scope:[findcol] from render::@2 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 - (byte) findcol::mincol#10 ← phi( findcol/(byte) 0 findcol::@8/(byte) findcol::mincol#2 ) - (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@8/(byte) findcol::mindiff#11 ) - (byte) findcol::i#10 ← phi( findcol/(byte) 0 findcol::@8/(byte) findcol::i#1 ) + (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) + (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@8/(byte) findcol::mindiff#11 ) + (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::i#1 ) (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 @@ -5951,7 +5951,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::@8 findcol::@9 - (byte) findcol::return#0 ← phi( findcol::@9/(byte) 0 findcol::@8/(byte) findcol::mincol#2 ) + (byte) findcol::return#0 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) return to:@return findcol::@4: scope:[findcol] from findcol::@2 @@ -5997,15 +5997,15 @@ FINAL SYMBOL TABLE (byte*) COLORS (const byte*) COLORS#0 = (word) 55296 (byte[]) COLS -(const byte[]) COLS#0 = { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } +(const byte[]) COLS#0 = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } (byte) FILL -(const byte) FILL#0 = (byte) 230 +(const byte) FILL#0 = (byte/word/signed word) 230 (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte[]) XPOS -(const byte[]) XPOS#0 = { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } +(const byte[]) XPOS#0 = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) YPOS -(const byte[]) YPOS#0 = { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } +(const byte[]) YPOS#0 = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } (void()) animate() (byte~) animate::$0 (byte~) animate::$1 @@ -6092,7 +6092,7 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) numpoints -(const byte) numpoints#0 = (byte) 6 +(const byte) numpoints#0 = (byte/signed byte/word/signed word) 6 (void()) render() (label) render::@1 (label) render::@2 @@ -6142,64 +6142,64 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 - *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 - if((byte~) animate::$2!=(byte) 40) goto animate::@1 + (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 + (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@7: scope:[animate] from animate - *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 - if((byte~) animate::$7!=(byte) 25) goto animate::@2 + (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 + (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 + if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@8: scope:[animate] from animate::@1 - *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 - *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 - if((byte~) animate::$12!=(byte) 255) goto animate::@3 + (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 + (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 + if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@9: scope:[animate] from animate::@2 - *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 - *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 - if((byte~) animate::$17!=(byte) 25) goto animate::@4 + (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 + (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 + if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@10: scope:[animate] from animate::@3 - *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 - *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 - if((byte~) animate::$22!=(byte) 255) goto animate::@return + (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 + (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@11: scope:[animate] from animate::@4 - *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 - if((byte~) animate::$27<(byte) 40) goto animate::@return + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 + (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 + (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 - *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 + (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 + (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -6208,10 +6208,10 @@ render: scope:[render] from main::@1 to:render::@1 render::@1: scope:[render] from render render::@6 (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@6/(byte*~) render::colline#6 ) - (byte) render::y#4 ← phi( render/(byte) 0 render::@6/(byte~) render::y#6 ) + (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@6/(byte~) render::y#6 ) to:render::@2 render::@2: scope:[render] from render::@1 render::@7 - (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@7/(byte~) render::x#4 ) + (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@7/(byte~) render::x#4 ) (byte) findcol::x#0 ← (byte) render::x#2 (byte) findcol::y#0 ← (byte) render::y#4 call findcol param-assignment @@ -6220,12 +6220,12 @@ render::@5: scope:[render] from render::@2 (byte) render::col#0 ← (byte) findcol::return#0 *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 (byte) render::x#1 ← ++ (byte) render::x#2 - if((byte) render::x#1!=(byte) 40) goto render::@7 + if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@7 to:render::@3 render::@3: scope:[render] from render::@5 - (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 + (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 (byte) render::y#1 ← ++ (byte) render::y#4 - if((byte) render::y#1!=(byte) 25) goto render::@6 + if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@6 to:render::@return render::@return: scope:[render] from render::@3 return @@ -6240,9 +6240,9 @@ render::@7: scope:[render] from render::@5 findcol: scope:[findcol] from render::@2 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@19 - (byte) findcol::mincol#10 ← phi( findcol/(byte) 0 findcol::@19/(byte~) findcol::mincol#14 ) - (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@19/(byte~) findcol::mindiff#13 ) - (byte) findcol::i#10 ← phi( findcol/(byte) 0 findcol::@19/(byte~) findcol::i#14 ) + (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::mincol#14 ) + (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) + (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::i#14 ) (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 @@ -6251,7 +6251,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#0 ← phi( findcol::@9/(byte) 0 findcol::@20/(byte~) findcol::mincol#15 ) + (byte) findcol::return#0 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@20/(byte~) findcol::mincol#15 ) return to:@return findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 @@ -6312,7 +6312,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@3 (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@3/(byte*~) initscreen::screen#3 ) *((byte*) initscreen::screen#2) ← (const byte) FILL#0 (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 - if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@3 + if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@3 to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 return @@ -6372,64 +6372,64 @@ main::@return: scope:[main] from main::@5 [6] return [ ] to:@return animate: scope:[animate] from main::@4 - [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] - [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] - [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] - [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] - [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] + [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] + [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] + [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] + [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] + [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] to:animate::@7 animate::@7: scope:[animate] from animate - [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] + [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] - [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] - [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] - [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] - [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] + [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] + [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] + [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] + [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] + [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] to:animate::@8 animate::@8: scope:[animate] from animate::@1 - [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] + [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] - [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] - [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] - [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] - [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] + [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] + [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] + [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] + [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] + [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] to:animate::@9 animate::@9: scope:[animate] from animate::@2 - [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] + [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] - [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] - [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] - [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] - [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] + [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] + [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] + [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] + [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] + [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] to:animate::@10 animate::@10: scope:[animate] from animate::@3 - [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] + [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] - [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] - [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] - [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] - [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] + [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] + [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] + [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] + [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] + [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] to:animate::@11 animate::@11: scope:[animate] from animate::@4 - [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] - [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] - [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] - [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] - [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] - [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] + [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] + [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] + [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] + [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] + [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] + [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] to:animate::@12 animate::@12: scope:[animate] from animate::@11 - [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] - [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] - [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] + [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] + [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] + [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 [45] return [ ] @@ -6439,10 +6439,10 @@ render: scope:[render] from main::@1 to:render::@1 render::@1: scope:[render] from render render::@6 [47] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@6/(byte*~) render::colline#6 ) [ render::y#4 render::colline#5 ] - [47] (byte) render::y#4 ← phi( render/(byte) 0 render::@6/(byte~) render::y#6 ) [ render::y#4 render::colline#5 ] + [47] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@6/(byte~) render::y#6 ) [ render::y#4 render::colline#5 ] to:render::@2 render::@2: scope:[render] from render::@1 render::@7 - [48] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@7/(byte~) render::x#4 ) [ render::y#4 render::colline#5 render::x#2 ] + [48] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@7/(byte~) render::x#4 ) [ render::y#4 render::colline#5 render::x#2 ] [49] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] [50] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] [51] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] @@ -6451,12 +6451,12 @@ render::@5: scope:[render] from render::@2 [52] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] [53] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] - [55] if((byte) render::x#1!=(byte) 40) goto render::@7 [ render::y#4 render::colline#5 render::x#1 ] + [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@7 [ render::y#4 render::colline#5 render::x#1 ] to:render::@3 render::@3: scope:[render] from render::@5 - [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] + [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::colline#1 render::y#1 ] - [58] if((byte) render::y#1!=(byte) 25) goto render::@6 [ render::colline#1 render::y#1 ] + [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@6 [ render::colline#1 render::y#1 ] to:render::@return render::@return: scope:[render] from render::@3 [59] return [ ] @@ -6472,9 +6472,9 @@ findcol: scope:[findcol] from render::@2 [63] phi() [ findcol::x#0 findcol::y#0 ] to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@19 - [64] (byte) findcol::mincol#10 ← phi( findcol/(byte) 0 findcol::@19/(byte~) findcol::mincol#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [64] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [64] (byte) findcol::i#10 ← phi( findcol/(byte) 0 findcol::@19/(byte~) findcol::i#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [64] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::mincol#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [64] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [64] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::i#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] [65] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] [66] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] [67] if((byte) findcol::x#0!=(byte) findcol::xp#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 ] @@ -6483,7 +6483,7 @@ findcol::@9: scope:[findcol] from findcol::@1 [68] 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 - [69] (byte) findcol::return#0 ← phi( findcol::@9/(byte) 0 findcol::@20/(byte~) findcol::mincol#15 ) [ findcol::return#0 ] + [69] (byte) findcol::return#0 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@20/(byte~) findcol::mincol#15 ) [ findcol::return#0 ] [70] return [ findcol::return#0 ] to:@return findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 @@ -6545,7 +6545,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@3 [99] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@3/(byte*~) initscreen::screen#3 ) [ initscreen::screen#2 ] [100] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] [101] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] - [102] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@3 [ initscreen::screen#1 ] + [102] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@3 [ initscreen::screen#1 ] to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 [103] return [ ] @@ -6618,64 +6618,64 @@ main::@return: scope:[main] from main::@5 [6] return [ ] to:@return animate: scope:[animate] from main::@4 - [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] - [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] - [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] - [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] - [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] + [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] + [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] + [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] + [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] + [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] to:animate::@7 animate::@7: scope:[animate] from animate - [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] + [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] - [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] - [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] - [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] - [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] + [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] + [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] + [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] + [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] + [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] to:animate::@8 animate::@8: scope:[animate] from animate::@1 - [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] + [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] - [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] - [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] - [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] - [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] + [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] + [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] + [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] + [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] + [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] to:animate::@9 animate::@9: scope:[animate] from animate::@2 - [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] + [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] - [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] - [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] - [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] - [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] + [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] + [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] + [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] + [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] + [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] to:animate::@10 animate::@10: scope:[animate] from animate::@3 - [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] + [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] - [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] - [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] - [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] - [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] + [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] + [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] + [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] + [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] + [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] to:animate::@11 animate::@11: scope:[animate] from animate::@4 - [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] - [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] - [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] - [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] - [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] - [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] + [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] + [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] + [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] + [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] + [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] + [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] to:animate::@12 animate::@12: scope:[animate] from animate::@11 - [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] - [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] - [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] + [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] + [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] + [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 [45] return [ ] @@ -6685,10 +6685,10 @@ render: scope:[render] from main::@1 to:render::@1 render::@1: scope:[render] from render render::@3 [47] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) [ render::y#4 render::colline#5 ] - [47] (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] + [47] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] to:render::@2 render::@2: scope:[render] from render::@1 render::@5 - [48] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] + [48] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] [49] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] [50] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] [51] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] @@ -6697,12 +6697,12 @@ render::@5: scope:[render] from render::@2 [52] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] [53] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] - [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] + [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] to:render::@3 render::@3: scope:[render] from render::@5 - [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] + [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] - [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] + [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] to:render::@return render::@return: scope:[render] from render::@3 [59] return [ ] @@ -6711,9 +6711,9 @@ findcol: scope:[findcol] from render::@2 [60] phi() [ findcol::x#0 findcol::y#0 ] to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@19 - [61] (byte) findcol::mincol#10 ← phi( findcol/(byte) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [61] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [61] (byte) findcol::i#10 ← phi( findcol/(byte) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [61] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [61] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [61] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] [62] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] [63] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] [64] if((byte) findcol::x#0!=(byte) findcol::xp#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 ] @@ -6722,7 +6722,7 @@ findcol::@9: scope:[findcol] from findcol::@1 [65] 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::@8 findcol::@9 - [66] (byte) findcol::return#0 ← phi( findcol::@9/(byte) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#0 ] + [66] (byte) findcol::return#0 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#0 ] [67] return [ findcol::return#0 ] to:@return findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 @@ -6772,7 +6772,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 [86] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) [ initscreen::screen#2 ] [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] [88] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] - [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] + [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 [90] return [ ] @@ -6802,64 +6802,64 @@ main::@return: scope:[main] from main::@5 [6] return [ ] ( main:0 [ ] ) to:@return animate: scope:[animate] from main::@4 - [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) - [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) - [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) - [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) - [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) + [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) + [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) + [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) + [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) + [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) to:animate::@7 animate::@7: scope:[animate] from animate - [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) + [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) - [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) - [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) - [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) - [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) + [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) + [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) + [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) + [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) + [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) to:animate::@8 animate::@8: scope:[animate] from animate::@1 - [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) + [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) - [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) - [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) - [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) - [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) + [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) + [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) + [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) + [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) + [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) to:animate::@9 animate::@9: scope:[animate] from animate::@2 - [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) + [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) - [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) - [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) - [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) - [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) + [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) + [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) + [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) + [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) + [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) to:animate::@10 animate::@10: scope:[animate] from animate::@3 - [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) + [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) - [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) - [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) - [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) - [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) + [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) + [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) + [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) + [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) + [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) to:animate::@11 animate::@11: scope:[animate] from animate::@4 - [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) - [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) - [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) - [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) - [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) - [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) + [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) + [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) + [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) + [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) + [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) + [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) to:animate::@12 animate::@12: scope:[animate] from animate::@11 - [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) - [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) - [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) + [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) + [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) + [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 [45] return [ ] ( main:0::animate:4 [ ] ) @@ -6869,10 +6869,10 @@ render: scope:[render] from main::@1 to:render::@1 render::@1: scope:[render] from render render::@3 [47] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) [ render::y#4 render::colline#5 ] ( main:0::render:3 [ render::y#4 render::colline#5 ] ) - [47] (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] ( main:0::render:3 [ render::y#4 render::colline#5 ] ) + [47] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] ( main:0::render:3 [ render::y#4 render::colline#5 ] ) to:render::@2 render::@2: scope:[render] from render::@1 render::@5 - [48] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 ] ) + [48] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 ] ) [49] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) [50] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) [51] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) @@ -6881,12 +6881,12 @@ render::@5: scope:[render] from render::@2 [52] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) [53] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#2 ] ) [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) - [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) + [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) to:render::@3 render::@3: scope:[render] from render::@5 - [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) + [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) - [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) + [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) to:render::@return render::@return: scope:[render] from render::@3 [59] return [ ] ( main:0::render:3 [ ] ) @@ -6895,9 +6895,9 @@ findcol: scope:[findcol] from render::@2 [60] phi() [ findcol::x#0 findcol::y#0 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@19 - [61] (byte) findcol::mincol#10 ← phi( findcol/(byte) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [61] (byte) findcol::mindiff#10 ← phi( findcol/(byte) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [61] (byte) findcol::i#10 ← phi( findcol/(byte) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [61] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [61] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [61] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) [62] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:0::render:3::findcol:51 [ 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::xp#0 ] ) [63] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:0::render:3::findcol:51 [ 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::xp#0 findcol::yp#0 ] ) [64] if((byte) findcol::x#0!=(byte) findcol::xp#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 ] ( main:0::render:3::findcol:51 [ 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::xp#0 findcol::yp#0 ] ) @@ -6906,7 +6906,7 @@ findcol::@9: scope:[findcol] from findcol::@1 [65] 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 ] ( main:0::render:3::findcol:51 [ 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::xp#0 findcol::yp#0 ] ) to:findcol::@return findcol::@return: scope:[findcol] from findcol::@8 findcol::@9 - [66] (byte) findcol::return#0 ← phi( findcol::@9/(byte) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#0 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) + [66] (byte) findcol::return#0 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#0 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) [67] return [ findcol::return#0 ] ( main:0::render:3::findcol:51 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) to:@return findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 @@ -6956,7 +6956,7 @@ initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 [86] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) [ initscreen::screen#2 ] ( main:0::initscreen:2 [ initscreen::screen#2 ] ) [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:0::initscreen:2 [ initscreen::screen#2 ] ) [88] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) - [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) + [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 [90] return [ ] ( main:0::initscreen:2 [ ] ) @@ -6964,49 +6964,49 @@ initscreen::@return: scope:[initscreen] from initscreen::@1 DOMINATORS @begin dominated by @begin -@5 dominated by @5 @begin -@end dominated by @5 @begin @end -main dominated by @5 @begin main -main::@1 dominated by @5 @begin main::@1 main -main::@4 dominated by @5 @begin main::@1 main::@4 main -main::@5 dominated by @5 @begin main::@1 main::@4 main::@5 main -main::@return dominated by @5 @begin main::@1 main::@4 main::@5 main main::@return -animate dominated by animate @5 @begin main::@1 main::@4 main -animate::@7 dominated by animate @5 @begin main::@1 main::@4 animate::@7 main -animate::@1 dominated by animate @5 @begin main::@1 main::@4 animate::@1 main -animate::@8 dominated by animate @5 @begin main::@1 main::@4 animate::@1 animate::@8 main -animate::@2 dominated by animate @5 @begin main::@1 main::@4 animate::@1 animate::@2 main -animate::@9 dominated by animate @5 @begin main::@1 main::@4 animate::@1 animate::@2 animate::@9 main -animate::@3 dominated by animate @5 @begin main::@1 main::@4 animate::@3 animate::@1 animate::@2 main -animate::@10 dominated by animate @5 @begin main::@1 main::@4 animate::@10 animate::@3 animate::@1 animate::@2 main -animate::@4 dominated by animate @5 @begin main::@1 main::@4 animate::@3 animate::@4 animate::@1 animate::@2 main -animate::@11 dominated by animate @5 @begin main::@1 main::@4 animate::@11 animate::@3 animate::@4 animate::@1 animate::@2 main -animate::@12 dominated by animate @5 @begin main::@1 main::@4 animate::@11 animate::@12 animate::@3 animate::@4 animate::@1 animate::@2 main -animate::@return dominated by animate @5 @begin animate::@return main::@1 main::@4 animate::@3 animate::@4 animate::@1 animate::@2 main -render dominated by @5 @begin main::@1 render main -render::@1 dominated by @5 @begin main::@1 render::@1 main render -render::@2 dominated by @5 @begin main::@1 render::@2 render::@1 main render -render::@5 dominated by @5 @begin main::@1 render::@2 render::@5 render::@1 main render -render::@3 dominated by @5 @begin main::@1 render::@3 render::@2 render::@5 render::@1 main render -render::@return dominated by @5 @begin main::@1 render::@3 render::@2 render::@5 render::@return render::@1 main render -findcol dominated by @5 @begin main::@1 findcol render::@2 render::@1 main render -findcol::@1 dominated by @5 @begin main::@1 findcol::@1 findcol render::@2 render::@1 main render -findcol::@9 dominated by @5 @begin main::@1 findcol::@1 findcol render::@2 findcol::@9 render::@1 main render -findcol::@return dominated by @5 @begin main::@1 findcol::@1 findcol render::@2 findcol::@return render::@1 main render -findcol::@2 dominated by @5 @begin main::@1 findcol::@2 findcol::@1 findcol render::@2 render::@1 main render -findcol::@12 dominated by @5 @begin main::@1 findcol::@2 findcol::@1 findcol::@12 findcol render::@2 render::@1 main render -findcol::@5 dominated by @5 @begin main::@1 findcol::@5 findcol::@2 findcol::@1 findcol render::@2 render::@1 main render -findcol::@14 dominated by @5 @begin main::@1 findcol::@5 findcol::@2 findcol::@1 findcol::@14 findcol render::@2 render::@1 main render -findcol::@7 dominated by @5 @begin main::@1 findcol::@7 findcol::@5 findcol::@2 findcol::@1 findcol render::@2 render::@1 main render -findcol::@16 dominated by @5 @begin main::@1 findcol::@7 findcol::@5 findcol::@2 findcol::@1 findcol::@16 findcol render::@2 render::@1 main render -findcol::@8 dominated by @5 @begin main::@1 findcol::@8 findcol::@7 findcol::@5 findcol::@2 findcol::@1 findcol render::@2 render::@1 main render -findcol::@19 dominated by @5 @begin main::@1 findcol::@8 findcol::@7 findcol::@5 findcol::@2 findcol::@1 findcol findcol::@19 render::@2 render::@1 main render -findcol::@21 dominated by @5 @begin main::@1 findcol::@7 findcol::@5 findcol::@2 findcol::@1 findcol render::@2 render::@1 main render findcol::@21 -findcol::@6 dominated by @5 @begin main::@1 findcol::@6 findcol::@5 findcol::@2 findcol::@1 findcol render::@2 render::@1 main render -findcol::@4 dominated by @5 @begin main::@1 findcol::@4 findcol::@2 findcol::@1 findcol render::@2 render::@1 main render -initscreen dominated by @5 @begin initscreen main -initscreen::@1 dominated by @5 @begin initscreen main initscreen::@1 -initscreen::@return dominated by @5 @begin initscreen initscreen::@return main initscreen::@1 +@5 dominated by @begin @5 +@end dominated by @end @begin @5 +main dominated by main @begin @5 +main::@1 dominated by main main::@1 @begin @5 +main::@4 dominated by main main::@1 main::@4 @begin @5 +main::@5 dominated by main main::@1 main::@5 main::@4 @begin @5 +main::@return dominated by main::@return main main::@1 main::@5 main::@4 @begin @5 +animate dominated by main animate main::@1 main::@4 @begin @5 +animate::@7 dominated by main animate main::@1 animate::@7 main::@4 @begin @5 +animate::@1 dominated by main animate animate::@1 main::@1 main::@4 @begin @5 +animate::@8 dominated by main animate animate::@1 main::@1 animate::@8 main::@4 @begin @5 +animate::@2 dominated by main animate animate::@2 animate::@1 main::@1 main::@4 @begin @5 +animate::@9 dominated by main animate animate::@2 animate::@1 main::@1 animate::@9 main::@4 @begin @5 +animate::@3 dominated by main animate animate::@2 animate::@1 animate::@3 main::@1 main::@4 @begin @5 +animate::@10 dominated by main animate animate::@2 animate::@1 animate::@3 main::@1 main::@4 @begin @5 animate::@10 +animate::@4 dominated by main animate animate::@2 animate::@1 animate::@4 animate::@3 main::@1 main::@4 @begin @5 +animate::@11 dominated by main animate animate::@2 animate::@1 animate::@4 animate::@3 main::@1 main::@4 @begin @5 animate::@11 +animate::@12 dominated by animate::@12 main animate animate::@2 animate::@1 animate::@4 animate::@3 main::@1 main::@4 @begin @5 animate::@11 +animate::@return dominated by main animate animate::@2 animate::@1 animate::@4 animate::@3 main::@1 main::@4 @begin @5 animate::@return +render dominated by main main::@1 render @begin @5 +render::@1 dominated by main main::@1 render::@1 render @begin @5 +render::@2 dominated by main render::@2 main::@1 render::@1 render @begin @5 +render::@5 dominated by main render::@5 render::@2 main::@1 render::@1 render @begin @5 +render::@3 dominated by main render::@5 render::@3 render::@2 main::@1 render::@1 render @begin @5 +render::@return dominated by main render::@5 render::@3 render::@2 main::@1 render::@1 render render::@return @begin @5 +findcol dominated by findcol main render::@2 main::@1 render::@1 render @begin @5 +findcol::@1 dominated by findcol findcol::@1 main render::@2 main::@1 render::@1 render @begin @5 +findcol::@9 dominated by findcol findcol::@1 main render::@2 main::@1 render::@1 render @begin @5 findcol::@9 +findcol::@return dominated by findcol findcol::@1 main render::@2 main::@1 render::@1 render @begin @5 findcol::@return +findcol::@2 dominated by findcol findcol::@2 findcol::@1 main render::@2 main::@1 render::@1 render @begin @5 +findcol::@12 dominated by findcol findcol::@2 findcol::@1 findcol::@12 main render::@2 main::@1 render::@1 render @begin @5 +findcol::@5 dominated by findcol findcol::@2 findcol::@1 findcol::@5 main render::@2 main::@1 render::@1 render @begin @5 +findcol::@14 dominated by findcol findcol::@2 findcol::@1 findcol::@14 findcol::@5 main render::@2 main::@1 render::@1 render @begin @5 +findcol::@7 dominated by findcol findcol::@2 findcol::@1 findcol::@7 findcol::@5 main render::@2 main::@1 render::@1 render @begin @5 +findcol::@16 dominated by findcol::@16 findcol findcol::@2 findcol::@1 findcol::@7 findcol::@5 main render::@2 main::@1 render::@1 render @begin @5 +findcol::@8 dominated by findcol findcol::@2 findcol::@1 findcol::@8 findcol::@7 findcol::@5 main render::@2 main::@1 render::@1 render @begin @5 +findcol::@19 dominated by findcol findcol::@2 findcol::@1 findcol::@8 findcol::@7 findcol::@5 main render::@2 main::@1 render::@1 render @begin @5 findcol::@19 +findcol::@21 dominated by findcol findcol::@2 findcol::@1 findcol::@7 findcol::@5 main render::@2 main::@1 render::@1 render @begin findcol::@21 @5 +findcol::@6 dominated by findcol findcol::@2 findcol::@1 findcol::@6 findcol::@5 main render::@2 main::@1 render::@1 render @begin @5 +findcol::@4 dominated by findcol::@4 findcol findcol::@2 findcol::@1 main render::@2 main::@1 render::@1 render @begin @5 +initscreen dominated by main @begin initscreen @5 +initscreen::@1 dominated by main @begin initscreen @5 initscreen::@1 +initscreen::@return dominated by main @begin initscreen initscreen::@return @5 initscreen::@1 Found back edge: Loop head: main::@1 tails: main::@5 blocks: null Found back edge: Loop head: render::@2 tails: render::@5 blocks: null @@ -7309,168 +7309,168 @@ animate: { .label _27 = $1e .label _30 = $1f .label _31 = $20 - //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- zpby1=_deref_cowo1 + //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- zpby1=_deref_cowo1 lda XPOS+0 sta _0 - //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- zpby1=zpby2_plus_1 + //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- zpby1=zpby2_plus_1 lda _0 clc adc #1 sta _1 - //SEG22 [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 + //SEG22 [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 lda _1 sta XPOS+0 - //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- zpby1=_deref_cowo1 + //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- zpby1=_deref_cowo1 lda XPOS+0 sta _2 - //SEG24 [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 + //SEG24 [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 lda _2 cmp #$28 bne b1 jmp b7 //SEG25 animate::@7 b7: - //SEG26 [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG26 [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta XPOS+0 jmp b1 //SEG27 animate::@1 b1: - //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- zpby1=_deref_cowo1 + //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- zpby1=_deref_cowo1 lda YPOS+0 sta _5 - //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- zpby1=zpby2_plus_1 + //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- zpby1=zpby2_plus_1 lda _5 clc adc #1 sta _6 - //SEG30 [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 + //SEG30 [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 lda _6 sta YPOS+0 - //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- zpby1=_deref_cowo1 + //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- zpby1=_deref_cowo1 lda YPOS+0 sta _7 - //SEG32 [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 + //SEG32 [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 lda _7 cmp #$19 bne b2 jmp b8 //SEG33 animate::@8 b8: - //SEG34 [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG34 [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+0 jmp b2 //SEG35 animate::@2 b2: - //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- zpby1=_deref_cowo1 + //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- zpby1=_deref_cowo1 lda XPOS+1 sta _10 - //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- zpby1=zpby2_minus_1 + //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- zpby1=zpby2_minus_1 lda _10 sec sbc #1 sta _11 - //SEG38 [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 + //SEG38 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 lda _11 sta XPOS+1 - //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- zpby1=_deref_cowo1 + //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- zpby1=_deref_cowo1 lda XPOS+1 sta _12 - //SEG40 [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 + //SEG40 [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 lda _12 cmp #$ff bne b3 jmp b9 //SEG41 animate::@9 b9: - //SEG42 [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG42 [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$28 sta XPOS+1 jmp b3 //SEG43 animate::@3 b3: - //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- zpby1=_deref_cowo1 + //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- zpby1=_deref_cowo1 lda YPOS+2 sta _15 - //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- zpby1=zpby2_plus_1 + //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- zpby1=zpby2_plus_1 lda _15 clc adc #1 sta _16 - //SEG46 [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 lda _16 sta YPOS+2 - //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- zpby1=_deref_cowo1 + //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- zpby1=_deref_cowo1 lda YPOS+2 sta _17 - //SEG48 [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 + //SEG48 [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 lda _17 cmp #$19 bne b4 jmp b10 //SEG49 animate::@10 b10: - //SEG50 [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG50 [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+2 jmp b4 //SEG51 animate::@4 b4: - //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- zpby1=_deref_cowo1 + //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- zpby1=_deref_cowo1 lda YPOS+3 sta _20 - //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- zpby1=zpby2_minus_1 + //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- zpby1=zpby2_minus_1 lda _20 sec sbc #1 sta _21 - //SEG54 [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 + //SEG54 [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 lda _21 sta YPOS+3 - //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- zpby1=_deref_cowo1 + //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- zpby1=_deref_cowo1 lda YPOS+3 sta _22 - //SEG56 [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 + //SEG56 [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- zpby1_neq_coby1_then_la1 lda _22 cmp #$ff bne breturn jmp b11 //SEG57 animate::@11 b11: - //SEG58 [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG58 [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta YPOS+3 - //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- zpby1=_deref_cowo1 + //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- zpby1=_deref_cowo1 lda XPOS+3 sta _25 - //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- zpby1=zpby2_plus_coby1 + //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- zpby1=zpby2_plus_coby1 lda _25 clc adc #7 sta _26 - //SEG61 [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 + //SEG61 [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 lda _26 sta XPOS+3 - //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- zpby1=_deref_cowo1 + //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- zpby1=_deref_cowo1 lda XPOS+3 sta _27 - //SEG63 [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- zpby1_lt_coby1_then_la1 + //SEG63 [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- zpby1_lt_coby1_then_la1 lda _27 cmp #$28 bcc breturn jmp b12 //SEG64 animate::@12 b12: - //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- zpby1=_deref_cowo1 + //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- zpby1=_deref_cowo1 lda XPOS+3 sta _30 - //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- zpby1=zpby2_minus_coby1 + //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- zpby1=zpby2_minus_coby1 lda _30 sec sbc #$28 sta _31 - //SEG67 [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 + //SEG67 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=zpby1 lda _31 sta XPOS+3 jmp breturn @@ -7492,7 +7492,7 @@ render: { sta colline lda #>COLORS sta colline+1 - //SEG73 [47] phi (byte) render::y#4 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 + //SEG73 [47] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 @@ -7505,7 +7505,7 @@ render: { b1: //SEG78 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] b2_from_b1: - //SEG79 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 + //SEG79 [48] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 @@ -7537,14 +7537,14 @@ render: { sta (colline),y //SEG90 [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG91 [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG91 [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 lda x cmp #$28 bne b2_from_b5 jmp b3 //SEG92 render::@3 b3: - //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda colline clc adc #$28 @@ -7554,7 +7554,7 @@ render: { !: //SEG94 [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1=_inc_zpby1 inc y - //SEG95 [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG95 [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #$19 bne b1_from_b3 @@ -7584,13 +7584,13 @@ findcol: { .label mindiff_14 = $a //SEG99 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG100 [61] phi (byte) findcol::mincol#10 = (byte) 0 [phi:findcol->findcol::@1#0] -- zpby1=coby1 + //SEG100 [61] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- zpby1=coby1 lda #0 sta mincol - //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 + //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG102 [61] phi (byte) findcol::i#10 = (byte) 0 [phi:findcol->findcol::@1#2] -- zpby1=coby1 + //SEG102 [61] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -7617,7 +7617,7 @@ findcol: { bne b2 //SEG109 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG110 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- zpby1=coby1 + //SEG110 [66] phi (byte) findcol::return#0 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- zpby1=coby1 lda #0 sta return jmp breturn @@ -7764,7 +7764,7 @@ initscreen: { bne !+ inc screen+1 !: - //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -7785,14 +7785,14 @@ Equivalence Class zp ZP_BYTE:13 [ animate::$0 ] has ALU potential. Equivalence Class zp ZP_BYTE:16 [ animate::$5 ] has ALU potential. Equivalence Class zp ZP_BYTE:22 [ animate::$15 ] has ALU potential. Equivalence Class zp ZP_BYTE:28 [ animate::$25 ] has ALU potential. -Statement [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) always clobbers reg byte a -Statement [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) always clobbers reg byte a -Statement [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a +Statement [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) always clobbers reg byte a +Statement [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) always clobbers reg byte a +Statement [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ render::y#4 render::y#1 ] Statement [69] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:0::render:3::findcol:51 [ 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::yp#0 findcol::diff#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ render::x#2 render::x#1 ] @@ -7809,15 +7809,15 @@ Statement [82] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp Statement [83] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:0::render:3::findcol:51 [ 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#2 ] ) always clobbers reg byte a Statement [84] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:0::render:3::findcol:51 [ 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::yp#0 findcol::diff#0 ] ) always clobbers reg byte a Statement [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:0::initscreen:2 [ initscreen::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) always clobbers reg byte a -Statement [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a -Statement [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) always clobbers reg byte a -Statement [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) always clobbers reg byte a -Statement [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a +Statement [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) always clobbers reg byte a +Statement [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) always clobbers reg byte a +Statement [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) always clobbers reg byte a +Statement [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) always clobbers reg byte a +Statement [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a Statement [69] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:0::render:3::findcol:51 [ 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::yp#0 findcol::diff#1 ] ) always clobbers reg byte a Statement [72] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:0::render:3::findcol:51 [ 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::$12 ] ) always clobbers reg byte a Statement [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:0::render:3::findcol:51 [ 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#3 ] ) always clobbers reg byte a @@ -7825,7 +7825,7 @@ Statement [82] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp Statement [83] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:0::render:3::findcol:51 [ 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#2 ] ) always clobbers reg byte a Statement [84] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:0::render:3::findcol:51 [ 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::yp#0 findcol::diff#0 ] ) always clobbers reg byte a Statement [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:0::initscreen:2 [ initscreen::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) always clobbers reg byte a +Statement [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ render::y#4 render::y#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_PTR_BYTE:3 [ render::colline#5 render::colline#1 ] : zp ZP_PTR_BYTE:3 , Potential registers zp ZP_BYTE:5 [ render::x#2 render::x#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , @@ -7872,68 +7872,68 @@ Uplift Scope [main] Uplift Scope [] Uplift attempts [findcol] 10000/559872 (limiting to 10000) -Uplifting [findcol] best 1705059 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#0 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:36 [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::yp#0 ] zp ZP_BYTE:34 [ findcol::y#0 ] zp ZP_BYTE:33 [ findcol::x#0 ] +Uplifting [findcol] best 1705289 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#0 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:36 [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::yp#0 ] zp ZP_BYTE:34 [ findcol::y#0 ] zp ZP_BYTE:33 [ findcol::x#0 ] Limited combination testing to 10000 combinations of 559872 possible. -Uplifting [render] best 1701059 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_PTR_BYTE:3 [ render::colline#5 render::colline#1 ] -Uplifting [initscreen] best 1701059 combination zp ZP_PTR_BYTE:11 [ initscreen::screen#2 initscreen::screen#1 ] -Uplifting [main] best 1701059 combination -Uplifting [] best 1701059 combination +Uplifting [render] best 1701289 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_PTR_BYTE:3 [ render::colline#5 render::colline#1 ] +Uplifting [initscreen] best 1701289 combination zp ZP_PTR_BYTE:11 [ initscreen::screen#2 initscreen::screen#1 ] +Uplifting [main] best 1701289 combination +Uplifting [] best 1701289 combination Attempting to uplift remaining variables inzp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] -Uplifting [findcol] best 1701059 combination zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] +Uplifting [findcol] best 1701289 combination zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] -Uplifting [findcol] best 1701059 combination zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] +Uplifting [findcol] best 1701289 combination zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ findcol::xp#0 ] -Uplifting [findcol] best 1701059 combination zp ZP_BYTE:36 [ findcol::xp#0 ] +Uplifting [findcol] best 1701289 combination zp ZP_BYTE:36 [ findcol::xp#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ findcol::yp#0 ] -Uplifting [findcol] best 1701059 combination zp ZP_BYTE:37 [ findcol::yp#0 ] +Uplifting [findcol] best 1701289 combination zp ZP_BYTE:37 [ findcol::yp#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ render::x#2 render::x#1 ] -Uplifting [render] best 1701059 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] +Uplifting [render] best 1701289 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ findcol::y#0 ] -Uplifting [findcol] best 1701059 combination zp ZP_BYTE:34 [ findcol::y#0 ] +Uplifting [findcol] best 1701289 combination zp ZP_BYTE:34 [ findcol::y#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ findcol::x#0 ] -Uplifting [findcol] best 1701059 combination zp ZP_BYTE:33 [ findcol::x#0 ] +Uplifting [findcol] best 1701289 combination zp ZP_BYTE:33 [ findcol::x#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render::y#4 render::y#1 ] -Uplifting [render] best 1701059 combination zp ZP_BYTE:2 [ render::y#4 render::y#1 ] +Uplifting [render] best 1701289 combination zp ZP_BYTE:2 [ render::y#4 render::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ animate::$0 ] -Uplifting [animate] best 1701053 combination reg byte a [ animate::$0 ] +Uplifting [animate] best 1701283 combination reg byte a [ animate::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ animate::$1 ] -Uplifting [animate] best 1701047 combination reg byte a [ animate::$1 ] +Uplifting [animate] best 1701277 combination reg byte a [ animate::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ animate::$2 ] -Uplifting [animate] best 1701041 combination reg byte a [ animate::$2 ] +Uplifting [animate] best 1701271 combination reg byte a [ animate::$2 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ animate::$5 ] -Uplifting [animate] best 1701035 combination reg byte a [ animate::$5 ] +Uplifting [animate] best 1701265 combination reg byte a [ animate::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ animate::$6 ] -Uplifting [animate] best 1701029 combination reg byte a [ animate::$6 ] +Uplifting [animate] best 1701259 combination reg byte a [ animate::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ animate::$7 ] -Uplifting [animate] best 1701023 combination reg byte a [ animate::$7 ] +Uplifting [animate] best 1701253 combination reg byte a [ animate::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ animate::$10 ] -Uplifting [animate] best 1701017 combination reg byte x [ animate::$10 ] +Uplifting [animate] best 1701247 combination reg byte x [ animate::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ animate::$11 ] -Uplifting [animate] best 1701009 combination reg byte x [ animate::$11 ] +Uplifting [animate] best 1701239 combination reg byte x [ animate::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:21 [ animate::$12 ] -Uplifting [animate] best 1701003 combination reg byte a [ animate::$12 ] +Uplifting [animate] best 1701233 combination reg byte a [ animate::$12 ] Attempting to uplift remaining variables inzp ZP_BYTE:22 [ animate::$15 ] -Uplifting [animate] best 1700997 combination reg byte a [ animate::$15 ] +Uplifting [animate] best 1701227 combination reg byte a [ animate::$15 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ animate::$16 ] -Uplifting [animate] best 1700991 combination reg byte a [ animate::$16 ] +Uplifting [animate] best 1701221 combination reg byte a [ animate::$16 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ animate::$17 ] -Uplifting [animate] best 1700985 combination reg byte a [ animate::$17 ] +Uplifting [animate] best 1701215 combination reg byte a [ animate::$17 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ animate::$20 ] -Uplifting [animate] best 1700979 combination reg byte x [ animate::$20 ] +Uplifting [animate] best 1701209 combination reg byte x [ animate::$20 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ animate::$21 ] -Uplifting [animate] best 1700971 combination reg byte x [ animate::$21 ] +Uplifting [animate] best 1701201 combination reg byte x [ animate::$21 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ animate::$22 ] -Uplifting [animate] best 1700965 combination reg byte a [ animate::$22 ] +Uplifting [animate] best 1701195 combination reg byte a [ animate::$22 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ animate::$25 ] -Uplifting [animate] best 1700959 combination reg byte a [ animate::$25 ] +Uplifting [animate] best 1701189 combination reg byte a [ animate::$25 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ animate::$26 ] -Uplifting [animate] best 1700953 combination reg byte a [ animate::$26 ] +Uplifting [animate] best 1701183 combination reg byte a [ animate::$26 ] Attempting to uplift remaining variables inzp ZP_BYTE:30 [ animate::$27 ] -Uplifting [animate] best 1700947 combination reg byte a [ animate::$27 ] +Uplifting [animate] best 1701177 combination reg byte a [ animate::$27 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ animate::$30 ] -Uplifting [animate] best 1700941 combination reg byte a [ animate::$30 ] +Uplifting [animate] best 1701171 combination reg byte a [ animate::$30 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ animate::$31 ] -Uplifting [animate] best 1700935 combination reg byte a [ animate::$31 ] +Uplifting [animate] best 1701165 combination reg byte a [ animate::$31 ] Coalescing zero page register [ zp ZP_BYTE:2 [ render::y#4 render::y#1 ] ] with [ zp ZP_BYTE:34 [ findcol::y#0 ] ] Coalescing zero page register [ zp ZP_PTR_BYTE:3 [ render::colline#5 render::colline#1 ] ] with [ zp ZP_PTR_BYTE:11 [ initscreen::screen#2 initscreen::screen#1 ] ] Coalescing zero page register [ zp ZP_BYTE:5 [ render::x#2 render::x#1 ] ] with [ zp ZP_BYTE:33 [ findcol::x#0 ] ] @@ -8025,117 +8025,117 @@ main: { } //SEG19 animate animate: { - //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 + //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 lda XPOS+0 - //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 + //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG22 [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG22 [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+0 - //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 + //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 lda XPOS+0 - //SEG24 [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG24 [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$28 bne b1 //SEG25 animate::@7 b7: - //SEG26 [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG26 [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta XPOS+0 //SEG27 animate::@1 b1: - //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 + //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 lda YPOS+0 - //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 + //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG30 [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG30 [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+0 - //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 + //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 lda YPOS+0 - //SEG32 [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG32 [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b2 //SEG33 animate::@8 b8: - //SEG34 [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG34 [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+0 //SEG35 animate::@2 b2: - //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 + //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 ldx XPOS+1 - //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 + //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 dex - //SEG38 [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG38 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx XPOS+1 - //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 + //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 lda XPOS+1 - //SEG40 [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG40 [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne b3 //SEG41 animate::@9 b9: - //SEG42 [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG42 [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$28 sta XPOS+1 //SEG43 animate::@3 b3: - //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 + //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 lda YPOS+2 - //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 + //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG46 [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+2 - //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 + //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 lda YPOS+2 - //SEG48 [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG48 [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b4 //SEG49 animate::@10 b10: - //SEG50 [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG50 [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+2 //SEG51 animate::@4 b4: - //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 + //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 ldx YPOS+3 - //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 + //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 dex - //SEG54 [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG54 [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx YPOS+3 - //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 + //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 lda YPOS+3 - //SEG56 [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG56 [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne breturn //SEG57 animate::@11 b11: - //SEG58 [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG58 [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta YPOS+3 - //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 + //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 + //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 clc adc #7 - //SEG61 [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG61 [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 - //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 + //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG63 [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 + //SEG63 [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 cmp #$28 bcc breturn //SEG64 animate::@12 b12: - //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 + //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 + //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 sec sbc #$28 - //SEG67 [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG67 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 //SEG68 animate::@return breturn: @@ -8154,7 +8154,7 @@ render: { sta colline lda #>COLORS sta colline+1 - //SEG73 [47] phi (byte) render::y#4 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 + //SEG73 [47] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 @@ -8166,7 +8166,7 @@ render: { b1: //SEG78 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] b2_from_b1: - //SEG79 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 + //SEG79 [48] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 @@ -8192,13 +8192,13 @@ render: { sta (colline),y //SEG90 [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG91 [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG91 [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 lda x cmp #$28 bne b2_from_b5 //SEG92 render::@3 b3: - //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda colline clc adc #$28 @@ -8208,7 +8208,7 @@ render: { !: //SEG94 [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1=_inc_zpby1 inc y - //SEG95 [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG95 [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #$19 bne b1_from_b3 @@ -8227,12 +8227,12 @@ findcol: { .label mindiff = 6 //SEG99 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG100 [61] phi (byte) findcol::mincol#10 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 + //SEG100 [61] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 + //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG102 [61] phi (byte) findcol::i#10 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 + //SEG102 [61] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG103 findcol::@1 b1: @@ -8254,7 +8254,7 @@ findcol: { bne b2 //SEG109 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG110 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 + //SEG110 [66] phi (byte) findcol::return#0 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG111 findcol::@return breturn: @@ -8380,7 +8380,7 @@ initscreen: { bne !+ inc screen+1 !: - //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -8452,113 +8452,113 @@ main: { } //SEG19 animate animate: { - //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 + //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 lda XPOS+0 - //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 + //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG22 [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG22 [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+0 - //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 - //SEG24 [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 + //SEG24 [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$28 bne b1 //SEG25 animate::@7 b7: - //SEG26 [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG26 [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta XPOS+0 //SEG27 animate::@1 b1: - //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 + //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 lda YPOS+0 - //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 + //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG30 [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG30 [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+0 - //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 - //SEG32 [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 + //SEG32 [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b2 //SEG33 animate::@8 b8: - //SEG34 [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG34 [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+0 //SEG35 animate::@2 b2: - //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 + //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 ldx XPOS+1 - //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 + //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 dex - //SEG38 [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG38 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx XPOS+1 - //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 + //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 txa - //SEG40 [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG40 [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne b3 //SEG41 animate::@9 b9: - //SEG42 [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG42 [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$28 sta XPOS+1 //SEG43 animate::@3 b3: - //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 + //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 lda YPOS+2 - //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 + //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG46 [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+2 - //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 - //SEG48 [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 + //SEG48 [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b4 //SEG49 animate::@10 b10: - //SEG50 [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG50 [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+2 //SEG51 animate::@4 b4: - //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 + //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 ldx YPOS+3 - //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 + //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 dex - //SEG54 [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG54 [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx YPOS+3 - //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 + //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 txa - //SEG56 [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG56 [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne breturn //SEG57 animate::@11 b11: - //SEG58 [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG58 [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta YPOS+3 - //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 + //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 + //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 clc adc #7 - //SEG61 [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG61 [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 - //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 - //SEG63 [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 + //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 + //SEG63 [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 cmp #$28 bcc breturn //SEG64 animate::@12 b12: - //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 + //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 + //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 sec sbc #$28 - //SEG67 [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG67 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 //SEG68 animate::@return breturn: @@ -8577,7 +8577,7 @@ render: { sta colline lda #>COLORS sta colline+1 - //SEG73 [47] phi (byte) render::y#4 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 + //SEG73 [47] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 @@ -8589,7 +8589,7 @@ render: { b1: //SEG78 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] b2_from_b1: - //SEG79 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 + //SEG79 [48] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 @@ -8615,13 +8615,13 @@ render: { sta (colline),y //SEG90 [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG91 [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG91 [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 lda x cmp #$28 bne b2_from_b5 //SEG92 render::@3 b3: - //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda colline clc adc #$28 @@ -8631,7 +8631,7 @@ render: { !: //SEG94 [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1=_inc_zpby1 inc y - //SEG95 [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG95 [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #$19 bne b1_from_b3 @@ -8650,12 +8650,12 @@ findcol: { .label mindiff = 6 //SEG99 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG100 [61] phi (byte) findcol::mincol#10 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 + //SEG100 [61] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 + //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG102 [61] phi (byte) findcol::i#10 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 + //SEG102 [61] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG103 findcol::@1 b1: @@ -8677,7 +8677,7 @@ findcol: { bne b2 //SEG109 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG110 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 + //SEG110 [66] phi (byte) findcol::return#0 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG111 findcol::@return breturn: @@ -8803,7 +8803,7 @@ initscreen: { bne !+ inc screen+1 !: - //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -8886,113 +8886,113 @@ main: { } //SEG19 animate animate: { - //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 + //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 lda XPOS+0 - //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 + //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG22 [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG22 [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+0 - //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 - //SEG24 [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 + //SEG24 [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$28 bne b1 //SEG25 animate::@7 b7: - //SEG26 [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG26 [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta XPOS+0 //SEG27 animate::@1 b1: - //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 + //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 lda YPOS+0 - //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 + //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG30 [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG30 [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+0 - //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 - //SEG32 [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 + //SEG32 [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b2 //SEG33 animate::@8 b8: - //SEG34 [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG34 [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+0 //SEG35 animate::@2 b2: - //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 + //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 ldx XPOS+1 - //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 + //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 dex - //SEG38 [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG38 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx XPOS+1 - //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 + //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 txa - //SEG40 [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG40 [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne b3 //SEG41 animate::@9 b9: - //SEG42 [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG42 [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$28 sta XPOS+1 //SEG43 animate::@3 b3: - //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 + //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 lda YPOS+2 - //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 + //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG46 [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+2 - //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 - //SEG48 [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 + //SEG48 [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b4 //SEG49 animate::@10 b10: - //SEG50 [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG50 [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+2 //SEG51 animate::@4 b4: - //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 + //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 ldx YPOS+3 - //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 + //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 dex - //SEG54 [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG54 [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx YPOS+3 - //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 + //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 txa - //SEG56 [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG56 [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne breturn //SEG57 animate::@11 b11: - //SEG58 [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG58 [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta YPOS+3 - //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 + //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 + //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 clc adc #7 - //SEG61 [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG61 [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 - //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 - //SEG63 [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 + //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 + //SEG63 [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 cmp #$28 bcc breturn //SEG64 animate::@12 b12: - //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 + //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 + //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 sec sbc #$28 - //SEG67 [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG67 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 //SEG68 animate::@return breturn: @@ -9011,7 +9011,7 @@ render: { sta colline lda #>COLORS sta colline+1 - //SEG73 [47] phi (byte) render::y#4 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 + //SEG73 [47] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 @@ -9021,7 +9021,7 @@ render: { //SEG77 render::@1 b1: //SEG78 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] - //SEG79 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 + //SEG79 [48] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 @@ -9046,13 +9046,13 @@ render: { sta (colline),y //SEG90 [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG91 [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG91 [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 lda x cmp #$28 bne b2 //SEG92 render::@3 b3: - //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda colline clc adc #$28 @@ -9062,7 +9062,7 @@ render: { !: //SEG94 [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1=_inc_zpby1 inc y - //SEG95 [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG95 [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #$19 bne b1 @@ -9081,12 +9081,12 @@ findcol: { .label mindiff = 6 //SEG99 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG100 [61] phi (byte) findcol::mincol#10 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 + //SEG100 [61] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 + //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG102 [61] phi (byte) findcol::i#10 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 + //SEG102 [61] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG103 findcol::@1 b1: @@ -9108,7 +9108,7 @@ findcol: { bne b2 //SEG109 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG110 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 + //SEG110 [66] phi (byte) findcol::return#0 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG111 findcol::@return breturn: @@ -9227,7 +9227,7 @@ initscreen: { bne !+ inc screen+1 !: - //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1 @@ -9311,107 +9311,107 @@ main: { } //SEG19 animate animate: { - //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 + //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 lda XPOS+0 - //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 + //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG22 [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG22 [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+0 - //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 - //SEG24 [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 + //SEG24 [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$28 bne b1 //SEG25 animate::@7 - //SEG26 [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG26 [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta XPOS+0 //SEG27 animate::@1 b1: - //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 + //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 lda YPOS+0 - //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 + //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG30 [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG30 [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+0 - //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 - //SEG32 [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 + //SEG32 [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b2 //SEG33 animate::@8 - //SEG34 [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG34 [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+0 //SEG35 animate::@2 b2: - //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 + //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 ldx XPOS+1 - //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 + //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 dex - //SEG38 [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG38 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx XPOS+1 - //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 + //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 txa - //SEG40 [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG40 [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne b3 //SEG41 animate::@9 - //SEG42 [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG42 [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$28 sta XPOS+1 //SEG43 animate::@3 b3: - //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 + //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 lda YPOS+2 - //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 + //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG46 [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+2 - //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 - //SEG48 [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 + //SEG48 [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b4 //SEG49 animate::@10 - //SEG50 [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG50 [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+2 //SEG51 animate::@4 b4: - //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 + //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 ldx YPOS+3 - //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 + //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 dex - //SEG54 [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG54 [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx YPOS+3 - //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 + //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 txa - //SEG56 [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG56 [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne breturn //SEG57 animate::@11 - //SEG58 [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG58 [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta YPOS+3 - //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 + //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 + //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 clc adc #7 - //SEG61 [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG61 [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 - //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 - //SEG63 [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 + //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 + //SEG63 [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 cmp #$28 bcc breturn //SEG64 animate::@12 - //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 + //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 + //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 sec sbc #$28 - //SEG67 [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG67 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 //SEG68 animate::@return breturn: @@ -9429,7 +9429,7 @@ render: { sta colline lda #>COLORS sta colline+1 - //SEG73 [47] phi (byte) render::y#4 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 + //SEG73 [47] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 @@ -9439,7 +9439,7 @@ render: { //SEG77 render::@1 b1: //SEG78 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] - //SEG79 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 + //SEG79 [48] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 @@ -9462,12 +9462,12 @@ render: { sta (colline),y //SEG90 [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG91 [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG91 [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 lda x cmp #$28 bne b2 //SEG92 render::@3 - //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda colline clc adc #$28 @@ -9477,7 +9477,7 @@ render: { !: //SEG94 [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1=_inc_zpby1 inc y - //SEG95 [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG95 [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #$19 bne b1 @@ -9494,12 +9494,12 @@ findcol: { .label diff = 7 .label mindiff = 6 //SEG99 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] - //SEG100 [61] phi (byte) findcol::mincol#10 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 + //SEG100 [61] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 + //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG102 [61] phi (byte) findcol::i#10 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 + //SEG102 [61] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG103 findcol::@1 b1: @@ -9519,7 +9519,7 @@ findcol: { cmp yp bne b2 //SEG109 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] - //SEG110 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 + //SEG110 [66] phi (byte) findcol::return#0 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG111 findcol::@return breturn: @@ -9632,7 +9632,7 @@ initscreen: { bne !+ inc screen+1 !: - //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1 @@ -9691,107 +9691,107 @@ main: { } //SEG19 animate animate: { - //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 + //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 lda XPOS+0 - //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 + //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG22 [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG22 [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+0 - //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 - //SEG24 [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 + //SEG24 [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$28 bne b1 //SEG25 animate::@7 - //SEG26 [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG26 [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta XPOS+0 //SEG27 animate::@1 b1: - //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 + //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 lda YPOS+0 - //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 + //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG30 [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG30 [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+0 - //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 - //SEG32 [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 + //SEG32 [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b2 //SEG33 animate::@8 - //SEG34 [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG34 [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+0 //SEG35 animate::@2 b2: - //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 + //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 ldx XPOS+1 - //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 + //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 dex - //SEG38 [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG38 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx XPOS+1 - //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 + //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 txa - //SEG40 [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG40 [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne b3 //SEG41 animate::@9 - //SEG42 [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG42 [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$28 sta XPOS+1 //SEG43 animate::@3 b3: - //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 + //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 lda YPOS+2 - //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 + //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG46 [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+2 - //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 - //SEG48 [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 + //SEG48 [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b4 //SEG49 animate::@10 - //SEG50 [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG50 [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+2 //SEG51 animate::@4 b4: - //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 + //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 ldx YPOS+3 - //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 + //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 dex - //SEG54 [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG54 [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx YPOS+3 - //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 + //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 txa - //SEG56 [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG56 [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne breturn //SEG57 animate::@11 - //SEG58 [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG58 [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta YPOS+3 - //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 + //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 + //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 clc adc #7 - //SEG61 [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG61 [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 - //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 - //SEG63 [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 + //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 + //SEG63 [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 cmp #$28 bcc breturn //SEG64 animate::@12 - //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 + //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 + //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 sec sbc #$28 - //SEG67 [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG67 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 //SEG68 animate::@return breturn: @@ -9809,7 +9809,7 @@ render: { sta colline lda #>COLORS sta colline+1 - //SEG73 [47] phi (byte) render::y#4 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 + //SEG73 [47] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y //SEG74 [47] phi from render::@3 to render::@1 [phi:render::@3->render::@1] @@ -9818,7 +9818,7 @@ render: { //SEG77 render::@1 b1: //SEG78 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] - //SEG79 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 + //SEG79 [48] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x //SEG80 [48] phi from render::@5 to render::@2 [phi:render::@5->render::@2] @@ -9840,12 +9840,12 @@ render: { sta (colline),y //SEG90 [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG91 [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG91 [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 lda x cmp #$28 bne b2 //SEG92 render::@3 - //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda colline clc adc #$28 @@ -9855,7 +9855,7 @@ render: { !: //SEG94 [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1=_inc_zpby1 inc y - //SEG95 [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG95 [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #$19 bne b1 @@ -9872,12 +9872,12 @@ findcol: { .label diff = 7 .label mindiff = 6 //SEG99 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] - //SEG100 [61] phi (byte) findcol::mincol#10 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 + //SEG100 [61] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 + //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG102 [61] phi (byte) findcol::i#10 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 + //SEG102 [61] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG103 findcol::@1 b1: @@ -9897,7 +9897,7 @@ findcol: { cmp yp bne b2 //SEG109 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] - //SEG110 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 + //SEG110 [66] phi (byte) findcol::return#0 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG111 findcol::@return breturn: @@ -10009,7 +10009,7 @@ initscreen: { bne !+ inc screen+1 !: - //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1 @@ -10066,106 +10066,106 @@ main: { } //SEG19 animate animate: { - //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 + //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 lda XPOS+0 - //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 + //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG22 [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG22 [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+0 - //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 - //SEG24 [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 + //SEG24 [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$28 bne b1 //SEG25 animate::@7 - //SEG26 [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG26 [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta XPOS+0 //SEG27 animate::@1 b1: - //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 + //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 lda YPOS+0 - //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 + //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG30 [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG30 [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+0 - //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 - //SEG32 [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 + //SEG32 [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b2 //SEG33 animate::@8 - //SEG34 [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG34 [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+0 //SEG35 animate::@2 b2: - //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 + //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 ldx XPOS+1 - //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 + //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 dex - //SEG38 [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG38 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx XPOS+1 - //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 + //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 txa - //SEG40 [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG40 [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne b3 //SEG41 animate::@9 - //SEG42 [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG42 [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$28 sta XPOS+1 //SEG43 animate::@3 b3: - //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 + //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 lda YPOS+2 - //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 + //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG46 [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+2 - //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 - //SEG48 [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 + //SEG48 [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b4 //SEG49 animate::@10 - //SEG50 [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG50 [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+2 //SEG51 animate::@4 b4: - //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 + //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 ldx YPOS+3 - //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 + //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 dex - //SEG54 [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG54 [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx YPOS+3 - //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 + //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 txa - //SEG56 [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG56 [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne breturn //SEG57 animate::@11 - //SEG58 [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG58 [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta YPOS+3 - //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 + //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 + //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 clc adc #7 - //SEG61 [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG61 [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 - //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 - //SEG63 [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 + //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 + //SEG63 [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 cmp #$28 bcc breturn //SEG64 animate::@12 - //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 - //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 + //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 + //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 sec sbc #$28 - //SEG67 [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG67 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 //SEG68 animate::@return breturn: @@ -10183,7 +10183,7 @@ render: { sta colline lda #>COLORS sta colline+1 - //SEG73 [47] phi (byte) render::y#4 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 + //SEG73 [47] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y //SEG74 [47] phi from render::@3 to render::@1 [phi:render::@3->render::@1] @@ -10192,7 +10192,7 @@ render: { //SEG77 render::@1 b1: //SEG78 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] - //SEG79 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 + //SEG79 [48] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x //SEG80 [48] phi from render::@5 to render::@2 [phi:render::@5->render::@2] @@ -10214,12 +10214,12 @@ render: { sta (colline),y //SEG90 [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG91 [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG91 [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 lda x cmp #$28 bne b2 //SEG92 render::@3 - //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda colline clc adc #$28 @@ -10229,7 +10229,7 @@ render: { !: //SEG94 [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1=_inc_zpby1 inc y - //SEG95 [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG95 [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #$19 bne b1 @@ -10246,12 +10246,12 @@ findcol: { .label diff = 7 .label mindiff = 6 //SEG99 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] - //SEG100 [61] phi (byte) findcol::mincol#10 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 + //SEG100 [61] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 + //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG102 [61] phi (byte) findcol::i#10 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 + //SEG102 [61] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG103 findcol::@1 b1: @@ -10271,7 +10271,7 @@ findcol: { cmp yp bne b2 //SEG109 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] - //SEG110 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 + //SEG110 [66] phi (byte) findcol::return#0 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG111 findcol::@return breturn: @@ -10383,7 +10383,7 @@ initscreen: { bne !+ inc screen+1 !: - //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1 @@ -10404,15 +10404,15 @@ FINAL SYMBOL TABLE (byte*) COLORS (const byte*) COLORS#0 COLORS = (word) 55296 (byte[]) COLS -(const byte[]) COLS#0 COLS = { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } +(const byte[]) COLS#0 COLS = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } (byte) FILL -(const byte) FILL#0 FILL = (byte) 230 +(const byte) FILL#0 FILL = (byte/word/signed word) 230 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[]) XPOS -(const byte[]) XPOS#0 XPOS = { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } +(const byte[]) XPOS#0 XPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) YPOS -(const byte[]) YPOS#0 YPOS = { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } +(const byte[]) YPOS#0 YPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } (void()) animate() (byte~) animate::$0 reg byte a 4.0 (byte~) animate::$1 reg byte a 4.0 @@ -10503,7 +10503,7 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte) numpoints -(const byte) numpoints#0 numpoints = (byte) 6 +(const byte) numpoints#0 numpoints = (byte/signed byte/word/signed word) 6 (void()) render() (label) render::@1 (label) render::@2 @@ -10596,106 +10596,106 @@ main: { } //SEG19 animate animate: { - //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 + //SEG20 [7] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:0::animate:4 [ animate::$0 ] ) -- aby=_deref_cowo1 lda XPOS+0 - //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 + //SEG21 [8] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:0::animate:4 [ animate::$1 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG22 [9] *((const byte[]) XPOS#0+(byte) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG22 [9] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+0 - //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 - //SEG24 [11] if((byte~) animate::$2!=(byte) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG23 [10] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:0::animate:4 [ animate::$2 ] ) -- aby=_deref_cowo1 + //SEG24 [11] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$28 bne b1 //SEG25 animate::@7 - //SEG26 [12] *((const byte[]) XPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG26 [12] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta XPOS+0 //SEG27 animate::@1 b1: - //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 + //SEG28 [13] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:0::animate:4 [ animate::$5 ] ) -- aby=_deref_cowo1 lda YPOS+0 - //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 + //SEG29 [14] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:0::animate:4 [ animate::$6 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG30 [15] *((const byte[]) YPOS#0+(byte) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG30 [15] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+0 - //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 - //SEG32 [17] if((byte~) animate::$7!=(byte) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG31 [16] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:0::animate:4 [ animate::$7 ] ) -- aby=_deref_cowo1 + //SEG32 [17] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b2 //SEG33 animate::@8 - //SEG34 [18] *((const byte[]) YPOS#0+(byte) 0) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG34 [18] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+0 //SEG35 animate::@2 b2: - //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 + //SEG36 [19] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:0::animate:4 [ animate::$10 ] ) -- xby=_deref_cowo1 ldx XPOS+1 - //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 + //SEG37 [20] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:0::animate:4 [ animate::$11 ] ) -- xby=xby_minus_1 dex - //SEG38 [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG38 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx XPOS+1 - //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 + //SEG39 [22] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:0::animate:4 [ animate::$12 ] ) -- aby=_deref_cowo1 txa - //SEG40 [23] if((byte~) animate::$12!=(byte) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG40 [23] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne b3 //SEG41 animate::@9 - //SEG42 [24] *((const byte[]) XPOS#0+(byte) 1) ← (byte) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG42 [24] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$28 sta XPOS+1 //SEG43 animate::@3 b3: - //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 + //SEG44 [25] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:0::animate:4 [ animate::$15 ] ) -- aby=_deref_cowo1 lda YPOS+2 - //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 + //SEG45 [26] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:0::animate:4 [ animate::$16 ] ) -- aby=aby_plus_1 clc adc #1 - //SEG46 [27] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta YPOS+2 - //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 - //SEG48 [29] if((byte~) animate::$17!=(byte) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG47 [28] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:0::animate:4 [ animate::$17 ] ) -- aby=_deref_cowo1 + //SEG48 [29] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$19 bne b4 //SEG49 animate::@10 - //SEG50 [30] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG50 [30] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #0 sta YPOS+2 //SEG51 animate::@4 b4: - //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 + //SEG52 [31] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:0::animate:4 [ animate::$20 ] ) -- xby=_deref_cowo1 ldx YPOS+3 - //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 + //SEG53 [32] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:0::animate:4 [ animate::$21 ] ) -- xby=xby_minus_1 dex - //SEG54 [33] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby + //SEG54 [33] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=xby stx YPOS+3 - //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 + //SEG55 [34] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:0::animate:4 [ animate::$22 ] ) -- aby=_deref_cowo1 txa - //SEG56 [35] if((byte~) animate::$22!=(byte) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 + //SEG56 [35] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_neq_coby1_then_la1 cmp #$ff bne breturn //SEG57 animate::@11 - //SEG58 [36] *((const byte[]) YPOS#0+(byte) 3) ← (byte) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 + //SEG58 [36] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=coby2 lda #$19 sta YPOS+3 - //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 + //SEG59 [37] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:0::animate:4 [ animate::$25 ] ) -- aby=_deref_cowo1 lda XPOS+3 - //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 + //SEG60 [38] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:0::animate:4 [ animate::$26 ] ) -- aby=aby_plus_coby1 clc adc #7 - //SEG61 [39] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG61 [39] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 - //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 - //SEG63 [41] if((byte~) animate::$27<(byte) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 + //SEG62 [40] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:0::animate:4 [ animate::$27 ] ) -- aby=_deref_cowo1 + //SEG63 [41] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:0::animate:4 [ ] ) -- aby_lt_coby1_then_la1 cmp #$28 bcc breturn //SEG64 animate::@12 - //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 - //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 + //SEG65 [42] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:0::animate:4 [ animate::$30 ] ) -- aby=_deref_cowo1 + //SEG66 [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:0::animate:4 [ animate::$31 ] ) -- aby=aby_minus_coby1 sec sbc #$28 - //SEG67 [44] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby + //SEG67 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:0::animate:4 [ ] ) -- _deref_cowo1=aby sta XPOS+3 //SEG68 animate::@return breturn: @@ -10713,7 +10713,7 @@ render: { sta colline lda #>COLORS sta colline+1 - //SEG73 [47] phi (byte) render::y#4 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 + //SEG73 [47] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y //SEG74 [47] phi from render::@3 to render::@1 [phi:render::@3->render::@1] @@ -10722,7 +10722,7 @@ render: { //SEG77 render::@1 b1: //SEG78 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] - //SEG79 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 + //SEG79 [48] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x //SEG80 [48] phi from render::@5 to render::@2 [phi:render::@5->render::@2] @@ -10744,12 +10744,12 @@ render: { sta (colline),y //SEG90 [54] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1=_inc_zpby1 inc x - //SEG91 [55] if((byte) render::x#1!=(byte) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG91 [55] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:0::render:3 [ render::y#4 render::colline#5 render::x#1 ] ) -- zpby1_neq_coby1_then_la1 lda x cmp #$28 bne b2 //SEG92 render::@3 - //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG93 [56] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:0::render:3 [ render::y#4 render::colline#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda colline clc adc #$28 @@ -10759,7 +10759,7 @@ render: { !: //SEG94 [57] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1=_inc_zpby1 inc y - //SEG95 [58] if((byte) render::y#1!=(byte) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG95 [58] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:0::render:3 [ render::y#1 render::colline#1 ] ) -- zpby1_neq_coby1_then_la1 lda y cmp #$19 bne b1 @@ -10776,12 +10776,12 @@ findcol: { .label diff = 7 .label mindiff = 6 //SEG99 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] - //SEG100 [61] phi (byte) findcol::mincol#10 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 + //SEG100 [61] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 + //SEG101 [61] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG102 [61] phi (byte) findcol::i#10 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 + //SEG102 [61] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG103 findcol::@1 b1: @@ -10801,7 +10801,7 @@ findcol: { cmp yp bne b2 //SEG109 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] - //SEG110 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 + //SEG110 [66] phi (byte) findcol::return#0 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG111 findcol::@return breturn: @@ -10913,7 +10913,7 @@ initscreen: { bne !+ inc screen+1 !: - //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG159 [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:0::initscreen:2 [ initscreen::screen#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym index bebe6f106..ac45fe526 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym @@ -4,15 +4,15 @@ (byte*) COLORS (const byte*) COLORS#0 COLORS = (word) 55296 (byte[]) COLS -(const byte[]) COLS#0 COLS = { (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 7 } +(const byte[]) COLS#0 COLS = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } (byte) FILL -(const byte) FILL#0 FILL = (byte) 230 +(const byte) FILL#0 FILL = (byte/word/signed word) 230 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte[]) XPOS -(const byte[]) XPOS#0 XPOS = { (byte) 5, (byte) 15, (byte) 6, (byte) 34, (byte) 21, (byte) 31 } +(const byte[]) XPOS#0 XPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) YPOS -(const byte[]) YPOS#0 YPOS = { (byte) 5, (byte) 8, (byte) 14, (byte) 2, (byte) 17, (byte) 22 } +(const byte[]) YPOS#0 YPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } (void()) animate() (byte~) animate::$0 reg byte a 4.0 (byte~) animate::$1 reg byte a 4.0 @@ -103,7 +103,7 @@ (label) main::@5 (label) main::@return (byte) numpoints -(const byte) numpoints#0 numpoints = (byte) 6 +(const byte) numpoints#0 numpoints = (byte/signed byte/word/signed word) 6 (void()) render() (label) render::@1 (label) render::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.cfg b/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.cfg index 49ac00c6a..64ae975ed 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.cfg @@ -8,9 +8,9 @@ main: scope:[main] from @3 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@4 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@4/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) - [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) + [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) [5] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 main::$0 main::$1 sum::a#0 ] ( main:0 [ main::i#2 main::$0 main::$1 sum::a#0 ] ) [6] (byte) sum::b#0 ← (byte~) main::$0 [ main::i#2 main::$1 sum::a#0 sum::b#0 ] ( main:0 [ main::i#2 main::$1 sum::a#0 sum::b#0 ] ) [7] (byte) sum::c#0 ← (byte~) main::$1 [ main::i#2 sum::a#0 sum::b#0 sum::c#0 ] ( main:0 [ main::i#2 sum::a#0 sum::b#0 sum::c#0 ] ) @@ -19,8 +19,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 [9] (byte~) main::$2 ← (byte) sum::return#0 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) - [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) + [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) + [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) [13] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 main::$3 main::$4 sum2::a#0 ] ( main:0 [ main::i#2 main::$3 main::$4 sum2::a#0 ] ) [14] (byte) sum2::b#0 ← (byte~) main::$3 [ main::i#2 main::$4 sum2::a#0 sum2::b#0 ] ( main:0 [ main::i#2 main::$4 sum2::a#0 sum2::b#0 ] ) [15] (byte) sum2::c#0 ← (byte~) main::$4 [ main::i#2 sum2::a#0 sum2::b#0 sum2::c#0 ] ( main:0 [ main::i#2 sum2::a#0 sum2::b#0 sum2::c#0 ] ) @@ -30,7 +30,7 @@ main::@4: scope:[main] from main::@3 [17] (byte~) main::$5 ← (byte) sum2::return#0 [ main::i#2 main::$5 ] ( main:0 [ main::i#2 main::$5 ] ) [18] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [20] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@4 [21] return [ ] ( main:0 [ ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log b/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log index 53cdc547c..12a9b22fb 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log @@ -17,22 +17,22 @@ byte sum2(byte a, byte b, byte c) { return a+b+c; } PROGRAM - (byte*) SCREEN ← (word) 1024 - (word~) $0 ← (word) 1024 + (byte) 40 - (byte*) SCREEN2 ← (word~) $0 + (byte*) SCREEN ← (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2 ← (word/signed word~) $0 proc (void()) main() - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (byte~) main::$0 ← (byte) main::i + (byte) 1 - (byte~) main::$1 ← (byte) main::i + (byte) 2 + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$2 ← call sum (byte) main::i (byte~) main::$0 (byte~) main::$1 *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i + (byte) 1 - (byte~) main::$4 ← (byte) main::i + (byte) 2 + (byte~) main::$3 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$5 ← call sum2 (byte) main::i (byte~) main::$3 (byte~) main::$4 *((byte*) SCREEN2 + (byte) main::i) ← (byte~) main::$5 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$6 ← (byte) main::i != (byte) 11 + (boolean~) main::$6 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 main::@return: return @@ -58,7 +58,7 @@ endproc // sum2() call main SYMBOLS -(word~) $0 +(word/signed word~) $0 (byte*) SCREEN (byte*) SCREEN2 (void()) main() @@ -91,24 +91,24 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (word~) $0 ← (word) 1024 + (byte) 40 - (byte*) SCREEN2 ← (word~) $0 + (byte*) SCREEN ← (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2 ← (word/signed word~) $0 to:@1 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) main::i + (byte) 1 - (byte~) main::$1 ← (byte) main::i + (byte) 2 + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$2 ← call sum (byte) main::i (byte~) main::$0 (byte~) main::$1 *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i + (byte) 1 - (byte~) main::$4 ← (byte) main::i + (byte) 2 + (byte~) main::$3 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$5 ← call sum2 (byte) main::i (byte~) main::$3 (byte~) main::$4 *((byte*) SCREEN2 + (byte) main::i) ← (byte~) main::$5 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$6 ← (byte) main::i != (byte) 11 + (boolean~) main::$6 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 @@ -154,24 +154,24 @@ Removing empty block @2 Removing empty block sum2::@1 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (word~) $0 ← (word) 1024 + (byte) 40 - (byte*) SCREEN2 ← (word~) $0 + (byte*) SCREEN ← (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2 ← (word/signed word~) $0 to:@3 main: scope:[main] from - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte) main::i + (byte) 1 - (byte~) main::$1 ← (byte) main::i + (byte) 2 + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$2 ← call sum (byte) main::i (byte~) main::$0 (byte~) main::$1 *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i + (byte) 1 - (byte~) main::$4 ← (byte) main::i + (byte) 2 + (byte~) main::$3 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte~) main::$5 ← call sum2 (byte) main::i (byte~) main::$3 (byte~) main::$4 *((byte*) SCREEN2 + (byte) main::i) ← (byte~) main::$5 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$6 ← (byte) main::i != (byte) 11 + (boolean~) main::$6 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -204,16 +204,16 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word) 1024 - (word~) $0 ← (word) 1024 + (byte) 40 - (byte*) SCREEN2 ← (word~) $0 + (byte*) SCREEN ← (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2 ← (word/signed word~) $0 to:@3 main: scope:[main] from @3 - (byte) main::i ← (byte) 0 + (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 - (byte~) main::$0 ← (byte) main::i + (byte) 1 - (byte~) main::$1 ← (byte) main::i + (byte) 2 + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte) sum::a ← (byte) main::i (byte) sum::b ← (byte~) main::$0 (byte) sum::c ← (byte~) main::$1 @@ -222,8 +222,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 (byte~) main::$2 ← (byte) sum::return *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i + (byte) 1 - (byte~) main::$4 ← (byte) main::i + (byte) 2 + (byte~) main::$3 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i + (byte/signed byte/word/signed word) 2 (byte) sum2::a ← (byte) main::i (byte) sum2::b ← (byte~) main::$3 (byte) sum2::c ← (byte~) main::$4 @@ -233,7 +233,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return *((byte*) SCREEN2 + (byte) main::i) ← (byte~) main::$5 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$6 ← (byte) main::i != (byte) 11 + (boolean~) main::$6 ← (byte) main::i != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 @@ -271,21 +271,21 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (word~) $0 ← (word) 1024 + (byte) 40 - (byte*) SCREEN2#0 ← (word~) $0 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2#0 ← (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 ) (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#5 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 (byte*) SCREEN2#3 ← phi( main/(byte*) SCREEN2#4 main::@4/(byte*) SCREEN2#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 main::@4/(byte*) SCREEN#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -298,8 +298,8 @@ main::@3: scope:[main] from main::@1 (byte) sum::return#3 ← phi( main::@1/(byte) sum::return#0 ) (byte~) main::$2 ← (byte) sum::return#3 *((byte*) SCREEN#1 + (byte) main::i#3) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#3 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#3 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#3 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#3 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#3 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -313,7 +313,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#3 *((byte*) SCREEN2#1 + (byte) main::i#4) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#4 - (boolean~) main::$6 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 @@ -356,21 +356,21 @@ sum2::@return: scope:[sum2] from sum2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (word~) $0 ← (word) 1024 + (byte) 40 - (byte*) SCREEN2#0 ← (word~) $0 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2#0 ← (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 ) (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#5 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 (byte*) SCREEN2#3 ← phi( main/(byte*) SCREEN2#4 main::@4/(byte*) SCREEN2#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 main::@4/(byte*) SCREEN#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -384,8 +384,8 @@ main::@3: scope:[main] from main::@1 (byte) sum::return#3 ← phi( main::@1/(byte) sum::return#0 ) (byte~) main::$2 ← (byte) sum::return#3 *((byte*) SCREEN#1 + (byte) main::i#3) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#3 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#3 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#3 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#3 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#3 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -400,7 +400,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#3 *((byte*) SCREEN2#1 + (byte) main::i#4) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#4 - (boolean~) main::$6 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 @@ -442,7 +442,7 @@ sum2::@return: scope:[sum2] from sum2 @end: scope:[] from @4 INITIAL SSA SYMBOL TABLE -(word~) $0 +(word/signed word~) $0 (label) @3 (label) @4 (label) @begin @@ -522,21 +522,21 @@ Culled Empty Block (label) @4 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (word~) $0 ← (word) 1024 + (byte) 40 - (byte*) SCREEN2#0 ← (word~) $0 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2#0 ← (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 ) (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#5 ) - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 (byte*) SCREEN2#3 ← phi( main/(byte*) SCREEN2#4 main::@4/(byte*) SCREEN2#1 ) (byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 main::@4/(byte*) SCREEN#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -550,8 +550,8 @@ main::@3: scope:[main] from main::@1 (byte) sum::return#3 ← phi( main::@1/(byte) sum::return#0 ) (byte~) main::$2 ← (byte) sum::return#3 *((byte*) SCREEN#1 + (byte) main::i#3) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#3 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#3 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#3 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#3 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#3 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -566,7 +566,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#3 *((byte*) SCREEN2#1 + (byte) main::i#4) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#4 - (boolean~) main::$6 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 @@ -614,7 +614,7 @@ Not aliassing across scopes: sum2::b#0 main::$3 Not aliassing across scopes: sum2::c#0 main::$4 Not aliassing across scopes: main::$5 sum2::return#3 Alias (byte*) SCREEN#0 = (byte*) SCREEN#3 (byte*) SCREEN#5 -Alias (byte*) SCREEN2#0 = (byte*) SCREEN2#4 (byte*) SCREEN2#5 (word~) $0 +Alias (byte*) SCREEN2#0 = (byte*) SCREEN2#4 (byte*) SCREEN2#5 (word/signed word~) $0 Alias (byte) sum::return#0 = (byte) sum::return#2 (byte) sum::return#3 (byte) sum::return#1 (byte~) sum::$1 (byte) sum::return#4 Alias (byte*) SCREEN#1 = (byte*) SCREEN#2 (byte*) SCREEN#4 Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 @@ -629,18 +629,18 @@ Alias (byte) sum2::c#0 = (byte) sum2::c#1 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1024 + (byte) 40 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 (byte*) SCREEN2#1 ← phi( main/(byte*) SCREEN2#0 main::@4/(byte*) SCREEN2#1 ) (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 main::@4/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -649,8 +649,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 (byte~) main::$2 ← (byte) sum::return#0 *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#2 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -660,7 +660,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#0 *((byte*) SCREEN2#1 + (byte) main::i#2) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$6 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 @@ -698,18 +698,18 @@ Self Phi Eliminated (byte*) SCREEN2#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1024 + (byte) 40 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 (byte*) SCREEN2#1 ← phi( main/(byte*) SCREEN2#0 ) (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -718,8 +718,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 (byte~) main::$2 ← (byte) sum::return#0 *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#2 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -729,7 +729,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#0 *((byte*) SCREEN2#1 + (byte) main::i#2) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$6 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 @@ -759,16 +759,16 @@ Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1024 + (byte) 40 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -777,8 +777,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 (byte~) main::$2 ← (byte) sum::return#0 *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#2 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -788,7 +788,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#0 *((byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$6 ← (byte) main::i#1 != (byte) 11 + (boolean~) main::$6 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 if((boolean~) main::$6) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 @@ -813,20 +813,20 @@ sum2::@return: scope:[sum2] from sum2 to:@end @end: scope:[] from @3 -Simple Condition (boolean~) main::$6 if((byte) main::i#1!=(byte) 11) goto main::@1 +Simple Condition (boolean~) main::$6 if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word) 1024 - (byte*) SCREEN2#0 ← (word) 1024 + (byte) 40 + (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 to:@3 main: scope:[main] from @3 - (byte) main::i#0 ← (byte) 0 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@4 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -835,8 +835,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 (byte~) main::$2 ← (byte) sum::return#0 *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#2 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -846,7 +846,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#0 *((byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 return @@ -881,8 +881,8 @@ main: scope:[main] from @3 to:main::@1 main::@1: scope:[main] from main main::@4 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@4/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -891,8 +891,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 (byte~) main::$2 ← (byte) sum::return#0 *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#2 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -902,7 +902,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#0 *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 return @@ -948,7 +948,7 @@ Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Constant inlined main::i#0 = (byte) 0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -956,9 +956,9 @@ CONTROL FLOW GRAPH main: scope:[main] from @3 to:main::@1 main::@1: scope:[main] from main main::@4 - (byte) main::i#2 ← phi( main/(byte) 0 main::@4/(byte) main::i#1 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::i#1 ) + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -967,8 +967,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 (byte~) main::$2 ← (byte) sum::return#0 *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#2 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -978,7 +978,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#0 *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@1 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 to:main::@return main::@return: scope:[main] from main::@4 return @@ -1007,9 +1007,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word) 1024 +(const byte*) SCREEN#0 = (word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 = (word) 1024+(byte) 40 +(const byte*) SCREEN2#0 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40 (void()) main() (byte~) main::$0 (byte~) main::$1 @@ -1060,9 +1060,9 @@ CONTROL FLOW GRAPH - PHI LIFTED main: scope:[main] from @3 to:main::@1 main::@1: scope:[main] from main main::@5 - (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) - (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum::a#0 ← (byte) main::i#2 (byte) sum::b#0 ← (byte~) main::$0 (byte) sum::c#0 ← (byte~) main::$1 @@ -1071,8 +1071,8 @@ main::@1: scope:[main] from main main::@5 main::@3: scope:[main] from main::@1 (byte~) main::$2 ← (byte) sum::return#0 *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 - (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 - (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 + (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 (byte) sum2::a#0 ← (byte) main::i#2 (byte) sum2::b#0 ← (byte~) main::$3 (byte) sum2::c#0 ← (byte~) main::$4 @@ -1082,7 +1082,7 @@ main::@4: scope:[main] from main::@3 (byte~) main::$5 ← (byte) sum2::return#0 *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 (byte) main::i#1 ← ++ (byte) main::i#2 - if((byte) main::i#1!=(byte) 11) goto main::@5 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@5 to:main::@return main::@return: scope:[main] from main::@4 return @@ -1127,9 +1127,9 @@ main: scope:[main] from @3 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@5 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) [ main::i#2 ] - [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] - [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) [ main::i#2 ] + [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] + [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] [5] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 main::$0 main::$1 sum::a#0 ] [6] (byte) sum::b#0 ← (byte~) main::$0 [ main::i#2 main::$1 sum::a#0 sum::b#0 ] [7] (byte) sum::c#0 ← (byte~) main::$1 [ main::i#2 sum::a#0 sum::b#0 sum::c#0 ] @@ -1138,8 +1138,8 @@ main::@1: scope:[main] from main main::@5 main::@3: scope:[main] from main::@1 [9] (byte~) main::$2 ← (byte) sum::return#0 [ main::i#2 main::$2 ] [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] - [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] - [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] + [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] + [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] [13] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 main::$3 main::$4 sum2::a#0 ] [14] (byte) sum2::b#0 ← (byte~) main::$3 [ main::i#2 main::$4 sum2::a#0 sum2::b#0 ] [15] (byte) sum2::c#0 ← (byte~) main::$4 [ main::i#2 sum2::a#0 sum2::b#0 sum2::c#0 ] @@ -1149,7 +1149,7 @@ main::@4: scope:[main] from main::@3 [17] (byte~) main::$5 ← (byte) sum2::return#0 [ main::i#2 main::$5 ] [18] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 [ main::i#2 ] [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [20] if((byte) main::i#1!=(byte) 11) goto main::@5 [ main::i#1 ] + [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@5 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@4 [21] return [ ] @@ -1195,9 +1195,9 @@ main: scope:[main] from @3 [1] phi() [ ] to:main::@1 main::@1: scope:[main] from main main::@4 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@4/(byte) main::i#1 ) [ main::i#2 ] - [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] - [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::i#1 ) [ main::i#2 ] + [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] + [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] [5] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 main::$0 main::$1 sum::a#0 ] [6] (byte) sum::b#0 ← (byte~) main::$0 [ main::i#2 main::$1 sum::a#0 sum::b#0 ] [7] (byte) sum::c#0 ← (byte~) main::$1 [ main::i#2 sum::a#0 sum::b#0 sum::c#0 ] @@ -1206,8 +1206,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 [9] (byte~) main::$2 ← (byte) sum::return#0 [ main::i#2 main::$2 ] [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] - [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] - [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] + [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] + [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] [13] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 main::$3 main::$4 sum2::a#0 ] [14] (byte) sum2::b#0 ← (byte~) main::$3 [ main::i#2 main::$4 sum2::a#0 sum2::b#0 ] [15] (byte) sum2::c#0 ← (byte~) main::$4 [ main::i#2 sum2::a#0 sum2::b#0 sum2::c#0 ] @@ -1217,7 +1217,7 @@ main::@4: scope:[main] from main::@3 [17] (byte~) main::$5 ← (byte) sum2::return#0 [ main::i#2 main::$5 ] [18] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 [ main::i#2 ] [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [20] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] + [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@4 [21] return [ ] @@ -1248,9 +1248,9 @@ main: scope:[main] from @3 [1] phi() [ ] ( main:0 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@4 - [2] (byte) main::i#2 ← phi( main/(byte) 0 main::@4/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) - [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) + [2] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] ) + [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) + [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) [5] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 main::$0 main::$1 sum::a#0 ] ( main:0 [ main::i#2 main::$0 main::$1 sum::a#0 ] ) [6] (byte) sum::b#0 ← (byte~) main::$0 [ main::i#2 main::$1 sum::a#0 sum::b#0 ] ( main:0 [ main::i#2 main::$1 sum::a#0 sum::b#0 ] ) [7] (byte) sum::c#0 ← (byte~) main::$1 [ main::i#2 sum::a#0 sum::b#0 sum::c#0 ] ( main:0 [ main::i#2 sum::a#0 sum::b#0 sum::c#0 ] ) @@ -1259,8 +1259,8 @@ main::@1: scope:[main] from main main::@4 main::@3: scope:[main] from main::@1 [9] (byte~) main::$2 ← (byte) sum::return#0 [ main::i#2 main::$2 ] ( main:0 [ main::i#2 main::$2 ] ) [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) - [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) - [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) + [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) + [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) [13] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 main::$3 main::$4 sum2::a#0 ] ( main:0 [ main::i#2 main::$3 main::$4 sum2::a#0 ] ) [14] (byte) sum2::b#0 ← (byte~) main::$3 [ main::i#2 main::$4 sum2::a#0 sum2::b#0 ] ( main:0 [ main::i#2 main::$4 sum2::a#0 sum2::b#0 ] ) [15] (byte) sum2::c#0 ← (byte~) main::$4 [ main::i#2 sum2::a#0 sum2::b#0 sum2::c#0 ] ( main:0 [ main::i#2 sum2::a#0 sum2::b#0 sum2::c#0 ] ) @@ -1270,7 +1270,7 @@ main::@4: scope:[main] from main::@3 [17] (byte~) main::$5 ← (byte) sum2::return#0 [ main::i#2 main::$5 ] ( main:0 [ main::i#2 main::$5 ] ) [18] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5 [ main::i#2 ] ( main:0 [ main::i#2 ] ) [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) - [20] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) + [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@4 [21] return [ ] ( main:0 [ ] ) @@ -1292,17 +1292,17 @@ sum::@return: scope:[sum] from sum DOMINATORS @begin dominated by @begin -@3 dominated by @3 @begin -@end dominated by @3 @end @begin -main dominated by @3 @begin main -main::@1 dominated by @3 @begin main::@1 main -main::@3 dominated by @3 @begin main::@1 main::@3 main -main::@4 dominated by @3 @begin main::@1 main::@4 main::@3 main -main::@return dominated by main::@return @3 @begin main::@1 main::@4 main::@3 main -sum2 dominated by @3 sum2 @begin main::@1 main::@3 main -sum2::@return dominated by @3 sum2 @begin sum2::@return main::@1 main::@3 main -sum dominated by @3 @begin sum main::@1 main -sum::@return dominated by @3 @begin sum::@return sum main::@1 main +@3 dominated by @begin @3 +@end dominated by @begin @3 @end +main dominated by @begin @3 main +main::@1 dominated by @begin @3 main::@1 main +main::@3 dominated by @begin @3 main::@1 main main::@3 +main::@4 dominated by @begin @3 main::@1 main main::@3 main::@4 +main::@return dominated by main::@return @begin @3 main::@1 main main::@3 main::@4 +sum2 dominated by sum2 @begin @3 main::@1 main main::@3 +sum2::@return dominated by sum2 @begin @3 main::@1 main main::@3 sum2::@return +sum dominated by @begin @3 main::@1 main sum +sum::@return dominated by @begin @3 main::@1 main sum sum::@return Found back edge: Loop head: main::@1 tails: main::@4 blocks: null Populated: Loop head: main::@1 tails: main::@4 blocks: main::@4 main::@3 main::@1 @@ -1436,7 +1436,7 @@ main: { .label i = 2 //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -1446,12 +1446,12 @@ main: { jmp b1 //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- zpby1=zpby2_plus_1 + //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- zpby1=zpby2_plus_1 lda i clc adc #1 sta _0 - //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- zpby1=zpby2_plus_coby1 + //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- zpby1=zpby2_plus_coby1 lda i clc adc #2 @@ -1477,12 +1477,12 @@ main: { lda _2 ldx i sta SCREEN,x - //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- zpby1=zpby2_plus_1 + //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- zpby1=zpby2_plus_1 lda i clc adc #1 sta _3 - //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- zpby1=zpby2_plus_coby1 + //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- zpby1=zpby2_plus_coby1 lda i clc adc #2 @@ -1510,7 +1510,7 @@ main: { sta SCREEN2,x //SEG31 [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG32 [20] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG32 [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$b bne b1_from_b4 @@ -1568,13 +1568,13 @@ sum: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) always clobbers reg byte a +Statement [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$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::$0 ] -Statement [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) always clobbers reg byte a +Statement [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ main::$3 ] -Statement [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) always clobbers reg byte a -Statement [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) always clobbers reg byte a +Statement [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) always clobbers reg byte a +Statement [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) 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::$0 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ main::$1 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , @@ -1600,13 +1600,13 @@ Uplift Scope [sum2] 6.5: zp ZP_BYTE:12 [ sum2::b#0 ] 6.5: zp ZP_BYTE:13 [ sum2:: Uplift Scope [] Uplifting [main] best 1042 combination reg byte y [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::$5 ] reg byte x [ main::$0 ] reg byte a [ main::$1 ] reg byte x [ main::$3 ] reg byte a [ main::$4 ] -Uplifting [sum] best 945 combination reg byte x [ sum::b#0 ] zp ZP_BYTE:7 [ sum::c#0 ] reg byte y [ sum::a#0 ] reg byte a [ sum::return#0 ] reg byte a [ sum::$0 ] -Uplifting [sum2] best 848 combination reg byte x [ sum2::b#0 ] zp ZP_BYTE:13 [ sum2::c#0 ] reg byte y [ sum2::a#0 ] reg byte a [ sum2::return#0 ] reg byte a [ sum2::$0 ] -Uplifting [] best 848 combination +Uplifting [sum] best 947 combination reg byte x [ sum::b#0 ] zp ZP_BYTE:7 [ sum::c#0 ] reg byte y [ sum::a#0 ] reg byte a [ sum::return#0 ] reg byte a [ sum::$0 ] +Uplifting [sum2] best 852 combination reg byte x [ sum2::b#0 ] zp ZP_BYTE:13 [ sum2::c#0 ] reg byte y [ sum2::a#0 ] reg byte a [ sum2::return#0 ] reg byte a [ sum2::$0 ] +Uplifting [] best 852 combination Attempting to uplift remaining variables inzp ZP_BYTE:7 [ sum::c#0 ] -Uplifting [sum] best 848 combination zp ZP_BYTE:7 [ sum::c#0 ] +Uplifting [sum] best 852 combination zp ZP_BYTE:7 [ sum::c#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ sum2::c#0 ] -Uplifting [sum2] best 848 combination zp ZP_BYTE:13 [ sum2::c#0 ] +Uplifting [sum2] best 852 combination zp ZP_BYTE:13 [ sum2::c#0 ] Coalescing zero page register [ zp ZP_BYTE:7 [ sum::c#0 ] ] with [ zp ZP_BYTE:13 [ sum2::c#0 ] ] Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:2 [ sum::c#0 sum2::c#0 ] Removing instruction jmp b3 @@ -1640,7 +1640,7 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 jmp b1 //SEG10 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] @@ -1648,11 +1648,11 @@ main: { //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 + //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 tya tax inx - //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 + //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -1670,11 +1670,11 @@ main: { // (byte~) main::$2 = (byte) sum::return#0 // register copy reg byte a //SEG21 [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_yby=aby sta SCREEN,y - //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 + //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 tya tax inx - //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 + //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -1694,7 +1694,7 @@ main: { sta SCREEN2,y //SEG31 [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG32 [20] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG32 [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #$b bne b1_from_b4 //SEG33 main::@return @@ -1760,18 +1760,18 @@ bend: main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 jmp b1 //SEG10 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 + //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 tya tax inx - //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 + //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -1789,11 +1789,11 @@ main: { // (byte~) main::$2 = (byte) sum::return#0 // register copy reg byte a //SEG21 [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_yby=aby sta SCREEN,y - //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 + //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 tya tax inx - //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 + //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -1813,7 +1813,7 @@ main: { sta SCREEN2,y //SEG31 [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG32 [20] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG32 [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #$b bne b1 //SEG33 main::@return @@ -1880,18 +1880,18 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 jmp b1 //SEG10 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 + //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 tya tax inx - //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 + //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -1908,11 +1908,11 @@ main: { // (byte~) main::$2 = (byte) sum::return#0 // register copy reg byte a //SEG21 [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_yby=aby sta SCREEN,y - //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 + //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 tya tax inx - //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 + //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -1931,7 +1931,7 @@ main: { sta SCREEN2,y //SEG31 [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG32 [20] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG32 [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #$b bne b1 //SEG33 main::@return @@ -1988,17 +1988,17 @@ ASSEMBLER //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 //SEG10 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 + //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 tya tax inx - //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 + //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -2015,11 +2015,11 @@ main: { // (byte~) main::$2 = (byte) sum::return#0 // register copy reg byte a //SEG21 [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_yby=aby sta SCREEN,y - //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 + //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 tya tax inx - //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 + //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -2038,7 +2038,7 @@ main: { sta SCREEN2,y //SEG31 [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG32 [20] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG32 [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #$b bne b1 //SEG33 main::@return @@ -2081,9 +2081,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 SCREEN2 = (word) 1024+(byte) 40 +(const byte*) SCREEN2#0 SCREEN2 = (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 @@ -2155,17 +2155,17 @@ FINAL CODE //SEG7 main main: { //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] - //SEG9 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 + //SEG9 [2] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 //SEG10 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] //SEG11 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 + //SEG13 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$0 ] ( main:0 [ main::i#2 main::$0 ] ) -- xby=yby_plus_1 tya tax inx - //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 + //SEG14 [4] (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$0 main::$1 ] ( main:0 [ main::i#2 main::$0 main::$1 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -2182,11 +2182,11 @@ main: { // (byte~) main::$2 = (byte) sum::return#0 // register copy reg byte a //SEG21 [10] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:0 [ main::i#2 ] ) -- cowo1_derefidx_yby=aby sta SCREEN,y - //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 + //SEG22 [11] (byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 [ main::i#2 main::$3 ] ( main:0 [ main::i#2 main::$3 ] ) -- xby=yby_plus_1 tya tax inx - //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 + //SEG23 [12] (byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#2 main::$3 main::$4 ] ( main:0 [ main::i#2 main::$3 main::$4 ] ) -- aby=yby_plus_coby1 tya clc adc #2 @@ -2205,7 +2205,7 @@ main: { sta SCREEN2,y //SEG31 [19] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby=_inc_yby iny - //SEG32 [20] if((byte) main::i#1!=(byte) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 + //SEG32 [20] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] ) -- yby_neq_coby1_then_la1 cpy #$b bne b1 //SEG33 main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.sym b/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.sym index 219f5bc73..cfac0db71 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.sym @@ -2,9 +2,9 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word) 1024 +(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 SCREEN2 = (word) 1024+(byte) 40 +(const byte*) SCREEN2#0 SCREEN2 = (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 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.asm b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.asm new file mode 100644 index 000000000..987823f3a --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.asm @@ -0,0 +1,52 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + jsr main +main: { + .const zpptr = $1000 + .label zpptr2 = 4 + .label w = 6 + .label i = 3 + .label j = 2 + lda #0 + sta j + b1: + lda #0 + sta i + b2: + ldx #0 + b3: + lda #zpptr + adc #0 + sta zpptr2+1 + lda j + sta w + lda #0 + sta w+1 + lda zpptr2 + clc + adc w + sta zpptr2 + lda zpptr2+1 + adc w+1 + sta zpptr2+1 + txa + ldy #0 + sta (zpptr2),y + inx + cpx #$b + bne b3 + inc i + lda i + cmp #$b + bne b2 + inc j + lda j + cmp #$b + bne b1 + rts +} diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.cfg b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.cfg new file mode 100644 index 000000000..71a498749 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.cfg @@ -0,0 +1,35 @@ +@begin: scope:[] from + to:@1 +@1: scope:[] from @begin + [0] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @1 +main: scope:[main] from @1 + [1] phi() [ ] ( main:0 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@5 + [2] (byte) main::j#6 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::j#1 ) [ main::j#6 ] ( main:0 [ main::j#6 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [3] (byte) main::i#4 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::i#1 ) [ main::j#6 main::i#4 ] ( main:0 [ main::j#6 main::i#4 ] ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + [4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) + [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) + [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) + [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) + [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) + [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) + [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) + to:main::@4 +main::@4: scope:[main] from main::@3 + [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) + [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) + to:main::@5 +main::@5: scope:[main] from main::@4 + [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@5 + [15] return [ ] ( main:0 [ ] ) + to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.log b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.log new file mode 100644 index 000000000..707753e36 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.log @@ -0,0 +1,1887 @@ +void main() { + byte* zpptr = $1000; + for(byte j : 0..10) { + for(byte i : 0..10) { + for(byte k : 0..10) { + byte* zpptr2 = zpptr+i; + word w = (word)j; + // Testing byte* = byte* + word; + zpptr2 = zpptr2 + w; + *zpptr2 = k; + } + } + } +} +PROGRAM +proc (void()) main() + (byte*) main::zpptr ← (word/signed word) 4096 + (byte) main::j ← (byte/signed byte/word/signed word) 0 +main::@1: + (byte) main::i ← (byte/signed byte/word/signed word) 0 +main::@2: + (byte) main::k ← (byte/signed byte/word/signed word) 0 +main::@3: + (byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i + (byte*) main::zpptr2 ← (byte*~) main::$0 + (word~) main::$1 ← _word_ (byte) main::j + (word) main::w ← (word~) main::$1 + (byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w + (byte*) main::zpptr2 ← (byte*~) main::$2 + *((byte*) main::zpptr2) ← (byte) main::k + (byte) main::k ← ++ (byte) main::k + (boolean~) main::$3 ← (byte) main::k != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + (byte) main::j ← ++ (byte) main::j + (boolean~) main::$5 ← (byte) main::j != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 +main::@return: + return +endproc // main() + call main + +SYMBOLS +(void()) main() +(byte*~) main::$0 +(word~) main::$1 +(byte*~) main::$2 +(boolean~) main::$3 +(boolean~) main::$4 +(boolean~) main::$5 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@return +(byte) main::i +(byte) main::j +(byte) main::k +(word) main::w +(byte*) main::zpptr +(byte*) main::zpptr2 + +INITIAL CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from + (byte*) main::zpptr ← (word/signed word) 4096 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::i ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::k ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i + (byte*) main::zpptr2 ← (byte*~) main::$0 + (word~) main::$1 ← _word_ (byte) main::j + (word) main::w ← (word~) main::$1 + (byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w + (byte*) main::zpptr2 ← (byte*~) main::$2 + *((byte*) main::zpptr2) ← (byte) main::k + (byte) main::k ← ++ (byte) main::k + (boolean~) main::$3 ← (byte) main::k != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j ← ++ (byte) main::j + (boolean~) main::$5 ← (byte) main::j != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 + to:main::@6 +main::@6: scope:[main] from main::@5 + to:main::@return +main::@return: scope:[main] from main::@6 + return + to:@return +@1: scope:[] from @begin + call main + to:@end +@end: scope:[] from @1 + +Removing empty block main::@6 +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from + (byte*) main::zpptr ← (word/signed word) 4096 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::i ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::k ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i + (byte*) main::zpptr2 ← (byte*~) main::$0 + (word~) main::$1 ← _word_ (byte) main::j + (word) main::w ← (word~) main::$1 + (byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w + (byte*) main::zpptr2 ← (byte*~) main::$2 + *((byte*) main::zpptr2) ← (byte) main::k + (byte) main::k ← ++ (byte) main::k + (boolean~) main::$3 ← (byte) main::k != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j ← ++ (byte) main::j + (boolean~) main::$5 ← (byte) main::j != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main + to:@end +@end: scope:[] from @1 + +PROCEDURE MODIFY VARIABLE ANALYSIS + +CONTROL FLOW GRAPH WITH ASSIGNMENT CALL +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte*) main::zpptr ← (word/signed word) 4096 + (byte) main::j ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::i ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::k ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i + (byte*) main::zpptr2 ← (byte*~) main::$0 + (word~) main::$1 ← _word_ (byte) main::j + (word) main::w ← (word~) main::$1 + (byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w + (byte*) main::zpptr2 ← (byte*~) main::$2 + *((byte*) main::zpptr2) ← (byte) main::k + (byte) main::k ← ++ (byte) main::k + (boolean~) main::$3 ← (byte) main::k != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j ← ++ (byte) main::j + (boolean~) main::$5 ← (byte) main::j != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#5 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::j#4 ← phi( main::@1/(byte) main::j#6 main::@4/(byte) main::j#5 ) + (byte) main::i#4 ← phi( main::@1/(byte) main::i#0 main::@4/(byte) main::i#1 ) + (byte*) main::zpptr#2 ← phi( main::@1/(byte*) main::zpptr#3 main::@4/(byte*) main::zpptr#4 ) + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte) main::j#2 ← phi( main::@2/(byte) main::j#4 main::@3/(byte) main::j#2 ) + (byte) main::i#2 ← phi( main::@2/(byte) main::i#4 main::@3/(byte) main::i#2 ) + (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 ) + (byte*~) main::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2 + (byte*) main::zpptr2#0 ← (byte*~) main::$0 + (word~) main::$1 ← _word_ (byte) main::j#2 + (word) main::w#0 ← (word~) main::$1 + (byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0 + (byte*) main::zpptr2#1 ← (byte*~) main::$2 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte*) main::zpptr#4 ← phi( main::@3/(byte*) main::zpptr#1 ) + (byte) main::j#5 ← phi( main::@3/(byte) main::j#2 ) + (byte) main::i#3 ← phi( main::@3/(byte) main::i#2 ) + (byte) main::i#1 ← ++ (byte) main::i#3 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte*) main::zpptr#5 ← phi( main::@4/(byte*) main::zpptr#4 ) + (byte) main::j#3 ← phi( main::@4/(byte) main::j#5 ) + (byte) main::j#1 ← ++ (byte) main::j#3 + (boolean~) main::$5 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#5 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::j#4 ← phi( main::@1/(byte) main::j#6 main::@4/(byte) main::j#5 ) + (byte) main::i#4 ← phi( main::@1/(byte) main::i#0 main::@4/(byte) main::i#1 ) + (byte*) main::zpptr#2 ← phi( main::@1/(byte*) main::zpptr#3 main::@4/(byte*) main::zpptr#4 ) + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte) main::j#2 ← phi( main::@2/(byte) main::j#4 main::@3/(byte) main::j#2 ) + (byte) main::i#2 ← phi( main::@2/(byte) main::i#4 main::@3/(byte) main::i#2 ) + (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 ) + (byte*~) main::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2 + (byte*) main::zpptr2#0 ← (byte*~) main::$0 + (word~) main::$1 ← _word_ (byte) main::j#2 + (word) main::w#0 ← (word~) main::$1 + (byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0 + (byte*) main::zpptr2#1 ← (byte*~) main::$2 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte*) main::zpptr#4 ← phi( main::@3/(byte*) main::zpptr#1 ) + (byte) main::j#5 ← phi( main::@3/(byte) main::j#2 ) + (byte) main::i#3 ← phi( main::@3/(byte) main::i#2 ) + (byte) main::i#1 ← ++ (byte) main::i#3 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte*) main::zpptr#5 ← phi( main::@4/(byte*) main::zpptr#4 ) + (byte) main::j#3 ← phi( main::@4/(byte) main::j#5 ) + (byte) main::j#1 ← ++ (byte) main::j#3 + (boolean~) main::$5 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +INITIAL SSA SYMBOL TABLE +(label) @1 +(label) @2 +(label) @begin +(label) @end +(void()) main() +(byte*~) main::$0 +(word~) main::$1 +(byte*~) main::$2 +(boolean~) main::$3 +(boolean~) main::$4 +(boolean~) main::$5 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@return +(byte) main::i +(byte) main::i#0 +(byte) main::i#1 +(byte) main::i#2 +(byte) main::i#3 +(byte) main::i#4 +(byte) main::j +(byte) main::j#0 +(byte) main::j#1 +(byte) main::j#2 +(byte) main::j#3 +(byte) main::j#4 +(byte) main::j#5 +(byte) main::j#6 +(byte) main::k +(byte) main::k#0 +(byte) main::k#1 +(byte) main::k#2 +(word) main::w +(word) main::w#0 +(byte*) main::zpptr +(byte*) main::zpptr#0 +(byte*) main::zpptr#1 +(byte*) main::zpptr#2 +(byte*) main::zpptr#3 +(byte*) main::zpptr#4 +(byte*) main::zpptr#5 +(byte*) main::zpptr2 +(byte*) main::zpptr2#0 +(byte*) main::zpptr2#1 + +Culled Empty Block (label) @2 +Succesful SSA optimization Pass2CullEmptyBlocks +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#5 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::j#4 ← phi( main::@1/(byte) main::j#6 main::@4/(byte) main::j#5 ) + (byte) main::i#4 ← phi( main::@1/(byte) main::i#0 main::@4/(byte) main::i#1 ) + (byte*) main::zpptr#2 ← phi( main::@1/(byte*) main::zpptr#3 main::@4/(byte*) main::zpptr#4 ) + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte) main::j#2 ← phi( main::@2/(byte) main::j#4 main::@3/(byte) main::j#2 ) + (byte) main::i#2 ← phi( main::@2/(byte) main::i#4 main::@3/(byte) main::i#2 ) + (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 ) + (byte*~) main::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2 + (byte*) main::zpptr2#0 ← (byte*~) main::$0 + (word~) main::$1 ← _word_ (byte) main::j#2 + (word) main::w#0 ← (word~) main::$1 + (byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0 + (byte*) main::zpptr2#1 ← (byte*~) main::$2 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte*) main::zpptr#4 ← phi( main::@3/(byte*) main::zpptr#1 ) + (byte) main::j#5 ← phi( main::@3/(byte) main::j#2 ) + (byte) main::i#3 ← phi( main::@3/(byte) main::i#2 ) + (byte) main::i#1 ← ++ (byte) main::i#3 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte*) main::zpptr#5 ← phi( main::@4/(byte*) main::zpptr#4 ) + (byte) main::j#3 ← phi( main::@4/(byte) main::j#5 ) + (byte) main::j#1 ← ++ (byte) main::j#3 + (boolean~) main::$5 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Alias (byte*) main::zpptr2#0 = (byte*~) main::$0 +Alias (word) main::w#0 = (word~) main::$1 +Alias (byte*) main::zpptr2#1 = (byte*~) main::$2 +Alias (byte) main::i#2 = (byte) main::i#3 +Alias (byte) main::j#2 = (byte) main::j#5 (byte) main::j#3 +Alias (byte*) main::zpptr#1 = (byte*) main::zpptr#4 (byte*) main::zpptr#5 +Succesful SSA optimization Pass2AliasElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#1 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::j#4 ← phi( main::@1/(byte) main::j#6 main::@4/(byte) main::j#2 ) + (byte) main::i#4 ← phi( main::@1/(byte) main::i#0 main::@4/(byte) main::i#1 ) + (byte*) main::zpptr#2 ← phi( main::@1/(byte*) main::zpptr#3 main::@4/(byte*) main::zpptr#1 ) + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte) main::j#2 ← phi( main::@2/(byte) main::j#4 main::@3/(byte) main::j#2 ) + (byte) main::i#2 ← phi( main::@2/(byte) main::i#4 main::@3/(byte) main::i#2 ) + (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 ) + (byte*) main::zpptr2#0 ← (byte*) main::zpptr#1 + (byte) main::i#2 + (word) main::w#0 ← _word_ (byte) main::j#2 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#2 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#2 + (boolean~) main::$5 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Self Phi Eliminated (byte*) main::zpptr#1 +Self Phi Eliminated (byte) main::i#2 +Self Phi Eliminated (byte) main::j#2 +Succesful SSA optimization Pass2SelfPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#1 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::j#4 ← phi( main::@1/(byte) main::j#6 main::@4/(byte) main::j#2 ) + (byte) main::i#4 ← phi( main::@1/(byte) main::i#0 main::@4/(byte) main::i#1 ) + (byte*) main::zpptr#2 ← phi( main::@1/(byte*) main::zpptr#3 main::@4/(byte*) main::zpptr#1 ) + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte) main::j#2 ← phi( main::@2/(byte) main::j#4 ) + (byte) main::i#2 ← phi( main::@2/(byte) main::i#4 ) + (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 ) + (byte*) main::zpptr2#0 ← (byte*) main::zpptr#1 + (byte) main::i#2 + (word) main::w#0 ← _word_ (byte) main::j#2 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#2 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#2 + (boolean~) main::$5 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Redundant Phi (byte*) main::zpptr#1 (byte*) main::zpptr#2 +Redundant Phi (byte) main::i#2 (byte) main::i#4 +Redundant Phi (byte) main::j#2 (byte) main::j#4 +Succesful SSA optimization Pass2RedundantPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#2 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::j#4 ← phi( main::@1/(byte) main::j#6 main::@4/(byte) main::j#4 ) + (byte) main::i#4 ← phi( main::@1/(byte) main::i#0 main::@4/(byte) main::i#1 ) + (byte*) main::zpptr#2 ← phi( main::@1/(byte*) main::zpptr#3 main::@4/(byte*) main::zpptr#2 ) + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4 + (word) main::w#0 ← _word_ (byte) main::j#4 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + (boolean~) main::$3 ← (byte) main::k#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$3) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#4 + (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$4) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#4 + (boolean~) main::$5 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 11 + if((boolean~) main::$5) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Simple Condition (boolean~) main::$3 if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 +Simple Condition (boolean~) main::$4 if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 +Simple Condition (boolean~) main::$5 if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 +Succesful SSA optimization Pass2ConditionalJumpSimplification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte) main::j#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#2 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::j#4 ← phi( main::@1/(byte) main::j#6 main::@4/(byte) main::j#4 ) + (byte) main::i#4 ← phi( main::@1/(byte) main::i#0 main::@4/(byte) main::i#1 ) + (byte*) main::zpptr#2 ← phi( main::@1/(byte*) main::zpptr#3 main::@4/(byte*) main::zpptr#2 ) + (byte) main::k#0 ← (byte/signed byte/word/signed word) 0 + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4 + (word) main::w#0 ← _word_ (byte) main::j#4 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#4 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#4 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Constant (const byte*) main::zpptr#0 = 4096 +Constant (const byte) main::j#0 = 0 +Constant (const byte) main::i#0 = 0 +Constant (const byte) main::k#0 = 0 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(const byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(const byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#2 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::j#4 ← phi( main::@1/(byte) main::j#6 main::@4/(byte) main::j#4 ) + (byte) main::i#4 ← phi( main::@1/(const byte) main::i#0 main::@4/(byte) main::i#1 ) + (byte*) main::zpptr#2 ← phi( main::@1/(byte*) main::zpptr#3 main::@4/(byte*) main::zpptr#2 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4 + (word) main::w#0 ← _word_ (byte) main::j#4 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#4 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#4 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Self Phi Eliminated (byte*) main::zpptr#2 +Self Phi Eliminated (byte) main::j#4 +Succesful SSA optimization Pass2SelfPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(const byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(const byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#2 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::j#4 ← phi( main::@1/(byte) main::j#6 ) + (byte) main::i#4 ← phi( main::@1/(const byte) main::i#0 main::@4/(byte) main::i#1 ) + (byte*) main::zpptr#2 ← phi( main::@1/(byte*) main::zpptr#3 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4 + (word) main::w#0 ← _word_ (byte) main::j#4 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#4 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#4 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Redundant Phi (byte*) main::zpptr#2 (byte*) main::zpptr#3 +Redundant Phi (byte) main::j#4 (byte) main::j#6 +Succesful SSA optimization Pass2RedundantPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(const byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(const byte*) main::zpptr#0 main::@5/(byte*) main::zpptr#3 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::i#4 ← phi( main::@1/(const byte) main::i#0 main::@4/(byte) main::i#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte*) main::zpptr2#0 ← (byte*) main::zpptr#3 + (byte) main::i#4 + (word) main::w#0 ← _word_ (byte) main::j#6 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#4 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#6 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Self Phi Eliminated (byte*) main::zpptr#3 +Succesful SSA optimization Pass2SelfPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(const byte) main::j#0 main::@5/(byte) main::j#1 ) + (byte*) main::zpptr#3 ← phi( main/(const byte*) main::zpptr#0 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::i#4 ← phi( main::@1/(const byte) main::i#0 main::@4/(byte) main::i#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte*) main::zpptr2#0 ← (byte*) main::zpptr#3 + (byte) main::i#4 + (word) main::w#0 ← _word_ (byte) main::j#6 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#4 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#6 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Redundant Phi (byte*) main::zpptr#3 (const byte*) main::zpptr#0 +Succesful SSA optimization Pass2RedundantPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(const byte) main::j#0 main::@5/(byte) main::j#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::i#4 ← phi( main::@1/(const byte) main::i#0 main::@4/(byte) main::i#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) + (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 + (word) main::w#0 ← _word_ (byte) main::j#6 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#4 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#6 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#4 +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#4 +Inlining constant with var siblings (const byte) main::j#0 +Inlining constant with var siblings (const byte) main::j#0 +Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) main::k#0 +Inlining constant with var siblings (const byte) main::k#0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::k#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::j#0 = (byte/signed byte/word/signed word) 0 +Succesful SSA optimization Pass2ConstantInlining +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@5 + (byte) main::j#6 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::j#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + (byte) main::i#4 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::i#1 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) + (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 + (word) main::w#0 ← _word_ (byte) main::j#6 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#4 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#6 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@return +(byte) main::i +(byte) main::i#1 +(byte) main::i#4 +(byte) main::j +(byte) main::j#1 +(byte) main::j#6 +(byte) main::k +(byte) main::k#1 +(byte) main::k#2 +(word) main::w +(word) main::w#0 +(byte*) main::zpptr +(const byte*) main::zpptr#0 = (word/signed word) 4096 +(byte*) main::zpptr2 +(byte*) main::zpptr2#0 +(byte*) main::zpptr2#1 + +Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return +Added new block during phi lifting main::@7(between main::@5 and main::@1) +Added new block during phi lifting main::@8(between main::@4 and main::@2) +Added new block during phi lifting main::@9(between main::@3 and main::@3) +Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return main::@7 main::@8 main::@9 +CONTROL FLOW GRAPH - PHI LIFTED +@begin: scope:[] from + to:@1 +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@7 + (byte) main::j#6 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte~) main::j#7 ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@8 + (byte) main::i#4 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@8/(byte~) main::i#5 ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@9 + (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@9/(byte~) main::k#3 ) + (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 + (word) main::w#0 ← _word_ (byte) main::j#6 + (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 + *((byte*) main::zpptr2#1) ← (byte) main::k#2 + (byte) main::k#1 ← ++ (byte) main::k#2 + if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@9 + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte) main::i#1 ← ++ (byte) main::i#4 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@8 + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte) main::j#1 ← ++ (byte) main::j#6 + if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@7 + to:main::@return +main::@return: scope:[main] from main::@5 + return + to:@return +main::@7: scope:[main] from main::@5 + (byte~) main::j#7 ← (byte) main::j#1 + to:main::@1 +main::@8: scope:[main] from main::@4 + (byte~) main::i#5 ← (byte) main::i#1 + to:main::@2 +main::@9: scope:[main] from main::@3 + (byte~) main::k#3 ← (byte) main::k#1 + to:main::@3 + +Adding NOP phi() at start of main +CALL GRAPH +Calls in [] to main:0 + +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +CONTROL FLOW GRAPH - LIVE RANGES FOUND +@begin: scope:[] from + to:@1 +@1: scope:[] from @begin + [0] call main param-assignment [ ] + to:@end +@end: scope:[] from @1 +main: scope:[main] from @1 + [1] phi() [ ] + to:main::@1 +main::@1: scope:[main] from main main::@7 + [2] (byte) main::j#6 ← phi( main/(byte/signed byte/word/signed word) 0 main::@7/(byte~) main::j#7 ) [ main::j#6 ] + to:main::@2 +main::@2: scope:[main] from main::@1 main::@8 + [3] (byte) main::i#4 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@8/(byte~) main::i#5 ) [ main::j#6 main::i#4 ] + to:main::@3 +main::@3: scope:[main] from main::@2 main::@9 + [4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@9/(byte~) main::k#3 ) [ main::j#6 main::i#4 main::k#2 ] + [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] + [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] + [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] + [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] + [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] + [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@9 [ main::j#6 main::i#4 main::k#1 ] + to:main::@4 +main::@4: scope:[main] from main::@3 + [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] + [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@8 [ main::j#6 main::i#1 ] + to:main::@5 +main::@5: scope:[main] from main::@4 + [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] + [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@7 [ main::j#1 ] + to:main::@return +main::@return: scope:[main] from main::@5 + [15] return [ ] + to:@return +main::@7: scope:[main] from main::@5 + [16] (byte~) main::j#7 ← (byte) main::j#1 [ main::j#7 ] + to:main::@1 +main::@8: scope:[main] from main::@4 + [17] (byte~) main::i#5 ← (byte) main::i#1 [ main::j#6 main::i#5 ] + to:main::@2 +main::@9: scope:[main] from main::@3 + [18] (byte~) main::k#3 ← (byte) main::k#1 [ main::j#6 main::i#4 main::k#3 ] + to:main::@3 + +Created 3 initial phi equivalence classes +Coalesced [16] main::j#7 ← main::j#1 +Coalesced [17] main::i#5 ← main::i#1 +Coalesced [18] main::k#3 ← main::k#1 +Coalesced down to 3 phi equivalence classes +Culled Empty Block (label) main::@7 +Culled Empty Block (label) main::@8 +Culled Empty Block (label) main::@9 +Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return +Adding NOP phi() at start of main +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES +@begin: scope:[] from + to:@1 +@1: scope:[] from @begin + [0] call main param-assignment [ ] + to:@end +@end: scope:[] from @1 +main: scope:[main] from @1 + [1] phi() [ ] + to:main::@1 +main::@1: scope:[main] from main main::@5 + [2] (byte) main::j#6 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::j#1 ) [ main::j#6 ] + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [3] (byte) main::i#4 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::i#1 ) [ main::j#6 main::i#4 ] + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + [4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) [ main::j#6 main::i#4 main::k#2 ] + [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] + [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] + [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] + [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] + [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] + [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::j#6 main::i#4 main::k#1 ] + to:main::@4 +main::@4: scope:[main] from main::@3 + [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] + [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#6 main::i#1 ] + to:main::@5 +main::@5: scope:[main] from main::@4 + [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] + [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 ] + to:main::@return +main::@return: scope:[main] from main::@5 + [15] return [ ] + to:@return + +CONTROL FLOW GRAPH - PHI MEM COALESCED +@begin: scope:[] from + to:@1 +@1: scope:[] from @begin + [0] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @1 +main: scope:[main] from @1 + [1] phi() [ ] ( main:0 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@5 + [2] (byte) main::j#6 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::j#1 ) [ main::j#6 ] ( main:0 [ main::j#6 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@4 + [3] (byte) main::i#4 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::i#1 ) [ main::j#6 main::i#4 ] ( main:0 [ main::j#6 main::i#4 ] ) + to:main::@3 +main::@3: scope:[main] from main::@2 main::@3 + [4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) + [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) + [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) + [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) + [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) + [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) + [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) + to:main::@4 +main::@4: scope:[main] from main::@3 + [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) + [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) + to:main::@5 +main::@5: scope:[main] from main::@4 + [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 ] ( main:0 [ main::j#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@5 + [15] return [ ] ( main:0 [ ] ) + to:@return + +DOMINATORS +@begin dominated by @begin +@1 dominated by @1 @begin +@end dominated by @1 @begin @end +main dominated by @1 @begin main +main::@1 dominated by @1 @begin main::@1 main +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@3 dominated by @1 @begin main::@1 main::@2 main main::@3 +main::@4 dominated by @1 @begin main::@1 main::@2 main main::@3 main::@4 +main::@5 dominated by @1 @begin main::@1 main::@2 main main::@5 main::@3 main::@4 +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main main::@5 main::@3 main::@4 + +Found back edge: Loop head: main::@3 tails: main::@3 blocks: null +Found back edge: Loop head: main::@2 tails: main::@4 blocks: null +Found back edge: Loop head: main::@1 tails: main::@5 blocks: null +Populated: Loop head: main::@3 tails: main::@3 blocks: main::@3 +Populated: Loop head: main::@2 tails: main::@4 blocks: main::@4 main::@3 main::@2 +Populated: Loop head: main::@1 tails: main::@5 blocks: main::@5 main::@4 main::@3 main::@2 main::@1 +NATURAL LOOPS +Loop head: main::@3 tails: main::@3 blocks: main::@3 +Loop head: main::@2 tails: main::@4 blocks: main::@4 main::@3 main::@2 +Loop head: main::@1 tails: main::@5 blocks: main::@5 main::@4 main::@3 main::@2 main::@1 + +Found 0 loops in scope [] +Found 3 loops in scope [main] + Loop head: main::@3 tails: main::@3 blocks: main::@3 + Loop head: main::@2 tails: main::@4 blocks: main::@4 main::@3 main::@2 + Loop head: main::@1 tails: main::@5 blocks: main::@5 main::@4 main::@3 main::@2 main::@1 +NATURAL LOOPS WITH DEPTH +Loop head: main::@3 tails: main::@3 blocks: main::@3 depth: 3 +Loop head: main::@2 tails: main::@4 blocks: main::@4 main::@3 main::@2 depth: 2 +Loop head: main::@1 tails: main::@5 blocks: main::@5 main::@4 main::@3 main::@2 main::@1 depth: 1 + + +VARIABLE REGISTER WEIGHTS +(void()) main() +(byte) main::i +(byte) main::i#1 151.5 +(byte) main::i#4 150.375 +(byte) main::j +(byte) main::j#1 16.5 +(byte) main::j#6 93.0 +(byte) main::k +(byte) main::k#1 1501.5 +(byte) main::k#2 600.5999999999999 +(word) main::w +(word) main::w#0 2002.0 +(byte*) main::zpptr +(byte*) main::zpptr2 +(byte*) main::zpptr2#0 1001.0 +(byte*) main::zpptr2#1 2002.0 + +Initial phi equivalence classes +[ main::j#6 main::j#1 ] +[ main::i#4 main::i#1 ] +[ main::k#2 main::k#1 ] +Added variable main::zpptr2#0 to zero page equivalence class [ main::zpptr2#0 ] +Added variable main::w#0 to zero page equivalence class [ main::w#0 ] +Added variable main::zpptr2#1 to zero page equivalence class [ main::zpptr2#1 ] +Complete equivalence classes +[ main::j#6 main::j#1 ] +[ main::i#4 main::i#1 ] +[ main::k#2 main::k#1 ] +[ main::zpptr2#0 ] +[ main::w#0 ] +[ main::zpptr2#1 ] +Allocated zp ZP_BYTE:2 [ main::j#6 main::j#1 ] +Allocated zp ZP_BYTE:3 [ main::i#4 main::i#1 ] +Allocated zp ZP_BYTE:4 [ main::k#2 main::k#1 ] +Allocated zp ZP_PTR_BYTE:5 [ main::zpptr2#0 ] +Allocated zp ZP_WORD:7 [ main::w#0 ] +Allocated zp ZP_PTR_BYTE:9 [ main::zpptr2#1 ] +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels +//SEG2 @begin +bbegin: + jmp b1 +//SEG3 @1 +b1: +//SEG4 [0] call main param-assignment [ ] ( ) +//SEG5 [1] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main + jmp bend +//SEG6 @end +bend: +//SEG7 main +main: { + .const zpptr = $1000 + .label zpptr2 = 5 + .label w = 7 + .label zpptr2_1 = 9 + .label k = 4 + .label i = 3 + .label j = 2 + //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG9 [2] phi (byte) main::j#6 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 + lda #0 + sta j + jmp b1 + //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + b1_from_b5: + //SEG11 [2] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy + jmp b1 + //SEG12 main::@1 + b1: + //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + //SEG14 [3] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + lda #0 + sta i + jmp b2 + //SEG15 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + b2_from_b4: + //SEG16 [3] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + jmp b2 + //SEG17 main::@2 + b2: + //SEG18 [4] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + b3_from_b2: + //SEG19 [4] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@2->main::@3#0] -- zpby1=coby1 + lda #0 + sta k + jmp b3 + //SEG20 [4] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + b3_from_b3: + //SEG21 [4] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy + jmp b3 + //SEG22 main::@3 + b3: + //SEG23 [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) -- zpptrby1=cowo1_plus_zpby1 + lda #zpptr + adc #0 + sta zpptr2+1 + //SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 + lda j + sta w + lda #0 + sta w+1 + //SEG25 [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) -- zpptrby1=zpptrby2_plus_zpwo1 + lda zpptr2_1 + clc + adc zpptr2 + sta w + lda zpptr2_1+1 + adc zpptr2+1 + sta w+1 + //SEG26 [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) -- _deref_zpptrby1=zpby1 + ldy #0 + lda k + sta (zpptr2_1),y + //SEG27 [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- zpby1=_inc_zpby1 + inc k + //SEG28 [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- zpby1_neq_coby1_then_la1 + lda k + cmp #$b + bne b3_from_b3 + jmp b4 + //SEG29 main::@4 + b4: + //SEG30 [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1=_inc_zpby1 + inc i + //SEG31 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + lda i + cmp #$b + bne b2_from_b4 + jmp b5 + //SEG32 main::@5 + b5: + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1=_inc_zpby1 + inc j + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + lda j + cmp #$b + bne b1_from_b5 + jmp breturn + //SEG35 main::@return + breturn: + //SEG36 [15] return [ ] ( main:0 [ ] ) + rts +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::j#6 main::j#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::i#4 main::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::k#2 main::k#1 ] +Statement [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a +Statement [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a +Statement [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::j#6 main::j#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::i#4 main::i#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ main::k#2 main::k#1 ] +Statement [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) always clobbers reg byte a +Statement [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a +Statement [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a +Statement [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y +Potential registers zp ZP_BYTE:2 [ main::j#6 main::j#1 ] : zp ZP_BYTE:2 , reg byte x , +Potential registers zp ZP_BYTE:3 [ main::i#4 main::i#1 ] : zp ZP_BYTE:3 , reg byte x , +Potential registers zp ZP_BYTE:4 [ main::k#2 main::k#1 ] : zp ZP_BYTE:4 , reg byte x , +Potential registers zp ZP_PTR_BYTE:5 [ main::zpptr2#0 ] : zp ZP_PTR_BYTE:5 , +Potential registers zp ZP_WORD:7 [ main::w#0 ] : zp ZP_WORD:7 , +Potential registers zp ZP_PTR_BYTE:9 [ main::zpptr2#1 ] : zp ZP_PTR_BYTE:9 , + +REGISTER UPLIFT SCOPES +Uplift Scope [main] 2,102.1: zp ZP_BYTE:4 [ main::k#2 main::k#1 ] 2,002: zp ZP_WORD:7 [ main::w#0 ] 2,002: zp ZP_PTR_BYTE:9 [ main::zpptr2#1 ] 1,001: zp ZP_PTR_BYTE:5 [ main::zpptr2#0 ] 301.88: zp ZP_BYTE:3 [ main::i#4 main::i#1 ] 109.5: zp ZP_BYTE:2 [ main::j#6 main::j#1 ] +Uplift Scope [] + +Uplifting [main] best 83460 combination reg byte x [ main::k#2 main::k#1 ] zp ZP_WORD:7 [ main::w#0 ] zp ZP_PTR_BYTE:9 [ main::zpptr2#1 ] zp ZP_PTR_BYTE:5 [ main::zpptr2#0 ] zp ZP_BYTE:3 [ main::i#4 main::i#1 ] zp ZP_BYTE:2 [ main::j#6 main::j#1 ] +Uplifting [] best 83460 combination +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::i#4 main::i#1 ] +Uplifting [main] best 83460 combination zp ZP_BYTE:3 [ main::i#4 main::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::j#6 main::j#1 ] +Uplifting [main] best 83460 combination zp ZP_BYTE:2 [ main::j#6 main::j#1 ] +Coalescing zero page register [ zp ZP_PTR_BYTE:5 [ main::zpptr2#0 ] ] with [ zp ZP_PTR_BYTE:9 [ main::zpptr2#1 ] ] +Allocated (was zp ZP_PTR_BYTE:5) zp ZP_PTR_BYTE:4 [ main::zpptr2#0 main::zpptr2#1 ] +Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ main::w#0 ] +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp b4 +Removing instruction jmp b5 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +ASSEMBLER +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels +//SEG2 @begin +bbegin: +//SEG3 @1 +b1: +//SEG4 [0] call main param-assignment [ ] ( ) +//SEG5 [1] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG6 @end +bend: +//SEG7 main +main: { + .const zpptr = $1000 + .label zpptr2 = 4 + .label w = 6 + .label i = 3 + .label j = 2 + //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG9 [2] phi (byte) main::j#6 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 + lda #0 + sta j + jmp b1 + //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + b1_from_b5: + //SEG11 [2] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG12 main::@1 + b1: + //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + //SEG14 [3] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + lda #0 + sta i + jmp b2 + //SEG15 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + b2_from_b4: + //SEG16 [3] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG17 main::@2 + b2: + //SEG18 [4] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + b3_from_b2: + //SEG19 [4] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@2->main::@3#0] -- xby=coby1 + ldx #0 + jmp b3 + //SEG20 [4] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + b3_from_b3: + //SEG21 [4] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG22 main::@3 + b3: + //SEG23 [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) -- zpptrby1=cowo1_plus_zpby1 + lda #zpptr + adc #0 + sta zpptr2+1 + //SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 + lda j + sta w + lda #0 + sta w+1 + //SEG25 [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 + lda zpptr2 + clc + adc w + sta zpptr2 + lda zpptr2+1 + adc w+1 + sta zpptr2+1 + //SEG26 [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) -- _deref_zpptrby1=xby + txa + ldy #0 + sta (zpptr2),y + //SEG27 [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby=_inc_xby + inx + //SEG28 [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby_neq_coby1_then_la1 + cpx #$b + bne b3_from_b3 + //SEG29 main::@4 + b4: + //SEG30 [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1=_inc_zpby1 + inc i + //SEG31 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + lda i + cmp #$b + bne b2_from_b4 + //SEG32 main::@5 + b5: + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1=_inc_zpby1 + inc j + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + lda j + cmp #$b + bne b1_from_b5 + //SEG35 main::@return + breturn: + //SEG36 [15] return [ ] ( main:0 [ ] ) + rts +} + +Replacing label b3_from_b3 with b3 +Replacing label b2_from_b4 with b2 +Replacing label b1_from_b5 with b1 +Removing instruction bbegin: +Removing instruction main_from_b1: +Removing instruction b1_from_b5: +Removing instruction b2_from_b1: +Removing instruction b2_from_b4: +Removing instruction b3_from_b2: +Removing instruction b3_from_b3: +Succesful ASM optimization Pass5RedundantLabelElimination +ASSEMBLER +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels +//SEG2 @begin +//SEG3 @1 +b1: +//SEG4 [0] call main param-assignment [ ] ( ) +//SEG5 [1] phi from @1 to main [phi:@1->main] + jsr main +//SEG6 @end +bend: +//SEG7 main +main: { + .const zpptr = $1000 + .label zpptr2 = 4 + .label w = 6 + .label i = 3 + .label j = 2 + //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG9 [2] phi (byte) main::j#6 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 + lda #0 + sta j + jmp b1 + //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG11 [2] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG12 main::@1 + b1: + //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [3] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + lda #0 + sta i + jmp b2 + //SEG15 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG16 [3] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG17 main::@2 + b2: + //SEG18 [4] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG19 [4] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@2->main::@3#0] -- xby=coby1 + ldx #0 + jmp b3 + //SEG20 [4] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG21 [4] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG22 main::@3 + b3: + //SEG23 [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) -- zpptrby1=cowo1_plus_zpby1 + lda #zpptr + adc #0 + sta zpptr2+1 + //SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 + lda j + sta w + lda #0 + sta w+1 + //SEG25 [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 + lda zpptr2 + clc + adc w + sta zpptr2 + lda zpptr2+1 + adc w+1 + sta zpptr2+1 + //SEG26 [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) -- _deref_zpptrby1=xby + txa + ldy #0 + sta (zpptr2),y + //SEG27 [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby=_inc_xby + inx + //SEG28 [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby_neq_coby1_then_la1 + cpx #$b + bne b3 + //SEG29 main::@4 + b4: + //SEG30 [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1=_inc_zpby1 + inc i + //SEG31 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + lda i + cmp #$b + bne b2 + //SEG32 main::@5 + b5: + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1=_inc_zpby1 + inc j + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + lda j + cmp #$b + bne b1 + //SEG35 main::@return + breturn: + //SEG36 [15] return [ ] ( main:0 [ ] ) + rts +} + +Removing instruction b1: +Removing instruction bend: +Removing instruction b1_from_main: +Removing instruction b4: +Removing instruction b5: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +ASSEMBLER +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels +//SEG2 @begin +//SEG3 @1 +//SEG4 [0] call main param-assignment [ ] ( ) +//SEG5 [1] phi from @1 to main [phi:@1->main] + jsr main +//SEG6 @end +//SEG7 main +main: { + .const zpptr = $1000 + .label zpptr2 = 4 + .label w = 6 + .label i = 3 + .label j = 2 + //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG9 [2] phi (byte) main::j#6 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 + lda #0 + sta j + jmp b1 + //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG11 [2] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG12 main::@1 + b1: + //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [3] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + lda #0 + sta i + jmp b2 + //SEG15 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG16 [3] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG17 main::@2 + b2: + //SEG18 [4] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG19 [4] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@2->main::@3#0] -- xby=coby1 + ldx #0 + jmp b3 + //SEG20 [4] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG21 [4] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG22 main::@3 + b3: + //SEG23 [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) -- zpptrby1=cowo1_plus_zpby1 + lda #zpptr + adc #0 + sta zpptr2+1 + //SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 + lda j + sta w + lda #0 + sta w+1 + //SEG25 [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 + lda zpptr2 + clc + adc w + sta zpptr2 + lda zpptr2+1 + adc w+1 + sta zpptr2+1 + //SEG26 [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) -- _deref_zpptrby1=xby + txa + ldy #0 + sta (zpptr2),y + //SEG27 [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby=_inc_xby + inx + //SEG28 [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby_neq_coby1_then_la1 + cpx #$b + bne b3 + //SEG29 main::@4 + //SEG30 [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1=_inc_zpby1 + inc i + //SEG31 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + lda i + cmp #$b + bne b2 + //SEG32 main::@5 + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1=_inc_zpby1 + inc j + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + lda j + cmp #$b + bne b1 + //SEG35 main::@return + //SEG36 [15] return [ ] ( main:0 [ ] ) + rts +} + +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Succesful ASM optimization Pass5NextJumpElimination +ASSEMBLER +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels +//SEG2 @begin +//SEG3 @1 +//SEG4 [0] call main param-assignment [ ] ( ) +//SEG5 [1] phi from @1 to main [phi:@1->main] + jsr main +//SEG6 @end +//SEG7 main +main: { + .const zpptr = $1000 + .label zpptr2 = 4 + .label w = 6 + .label i = 3 + .label j = 2 + //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG9 [2] phi (byte) main::j#6 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 + lda #0 + sta j + //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG11 [2] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG12 main::@1 + b1: + //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [3] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + lda #0 + sta i + //SEG15 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG16 [3] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG17 main::@2 + b2: + //SEG18 [4] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG19 [4] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@2->main::@3#0] -- xby=coby1 + ldx #0 + //SEG20 [4] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG21 [4] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG22 main::@3 + b3: + //SEG23 [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) -- zpptrby1=cowo1_plus_zpby1 + lda #zpptr + adc #0 + sta zpptr2+1 + //SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 + lda j + sta w + lda #0 + sta w+1 + //SEG25 [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 + lda zpptr2 + clc + adc w + sta zpptr2 + lda zpptr2+1 + adc w+1 + sta zpptr2+1 + //SEG26 [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) -- _deref_zpptrby1=xby + txa + ldy #0 + sta (zpptr2),y + //SEG27 [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby=_inc_xby + inx + //SEG28 [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby_neq_coby1_then_la1 + cpx #$b + bne b3 + //SEG29 main::@4 + //SEG30 [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1=_inc_zpby1 + inc i + //SEG31 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + lda i + cmp #$b + bne b2 + //SEG32 main::@5 + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1=_inc_zpby1 + inc j + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + lda j + cmp #$b + bne b1 + //SEG35 main::@return + //SEG36 [15] return [ ] ( main:0 [ ] ) + rts +} + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@return +(byte) main::i +(byte) main::i#1 i zp ZP_BYTE:3 151.5 +(byte) main::i#4 i zp ZP_BYTE:3 150.375 +(byte) main::j +(byte) main::j#1 j zp ZP_BYTE:2 16.5 +(byte) main::j#6 j zp ZP_BYTE:2 93.0 +(byte) main::k +(byte) main::k#1 reg byte x 1501.5 +(byte) main::k#2 reg byte x 600.5999999999999 +(word) main::w +(word) main::w#0 w zp ZP_WORD:6 2002.0 +(byte*) main::zpptr +(const byte*) main::zpptr#0 zpptr = (word/signed word) 4096 +(byte*) main::zpptr2 +(byte*) main::zpptr2#0 zpptr2 zp ZP_PTR_BYTE:4 1001.0 +(byte*) main::zpptr2#1 zpptr2 zp ZP_PTR_BYTE:4 2002.0 + +zp ZP_BYTE:2 [ main::j#6 main::j#1 ] +zp ZP_BYTE:3 [ main::i#4 main::i#1 ] +reg byte x [ main::k#2 main::k#1 ] +zp ZP_PTR_BYTE:4 [ main::zpptr2#0 main::zpptr2#1 ] +zp ZP_WORD:6 [ main::w#0 ] + +FINAL CODE +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels +//SEG2 @begin +//SEG3 @1 +//SEG4 [0] call main param-assignment [ ] ( ) +//SEG5 [1] phi from @1 to main [phi:@1->main] + jsr main +//SEG6 @end +//SEG7 main +main: { + .const zpptr = $1000 + .label zpptr2 = 4 + .label w = 6 + .label i = 3 + .label j = 2 + //SEG8 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG9 [2] phi (byte) main::j#6 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- zpby1=coby1 + lda #0 + sta j + //SEG10 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG11 [2] phi (byte) main::j#6 = (byte) main::j#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG12 main::@1 + b1: + //SEG13 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [3] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 + lda #0 + sta i + //SEG15 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG16 [3] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG17 main::@2 + b2: + //SEG18 [4] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG19 [4] phi (byte) main::k#2 = (byte/signed byte/word/signed word) 0 [phi:main::@2->main::@3#0] -- xby=coby1 + ldx #0 + //SEG20 [4] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG21 [4] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@3->main::@3#0] -- register_copy + //SEG22 main::@3 + b3: + //SEG23 [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) -- zpptrby1=cowo1_plus_zpby1 + lda #zpptr + adc #0 + sta zpptr2+1 + //SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 + lda j + sta w + lda #0 + sta w+1 + //SEG25 [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) -- zpptrby1=zpptrby1_plus_zpwo1 + lda zpptr2 + clc + adc w + sta zpptr2 + lda zpptr2+1 + adc w+1 + sta zpptr2+1 + //SEG26 [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) -- _deref_zpptrby1=xby + txa + ldy #0 + sta (zpptr2),y + //SEG27 [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby=_inc_xby + inx + //SEG28 [10] if((byte) main::k#1!=(byte/signed byte/word/signed word) 11) goto main::@3 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) -- xby_neq_coby1_then_la1 + cpx #$b + bne b3 + //SEG29 main::@4 + //SEG30 [11] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1=_inc_zpby1 + inc i + //SEG31 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#6 main::i#1 ] ( main:0 [ main::j#6 main::i#1 ] ) -- zpby1_neq_coby1_then_la1 + lda i + cmp #$b + bne b2 + //SEG32 main::@5 + //SEG33 [13] (byte) main::j#1 ← ++ (byte) main::j#6 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1=_inc_zpby1 + inc j + //SEG34 [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@1 [ main::j#1 ] ( main:0 [ main::j#1 ] ) -- zpby1_neq_coby1_then_la1 + lda j + cmp #$b + bne b1 + //SEG35 main::@return + //SEG36 [15] return [ ] ( main:0 [ ] ) + rts +} + diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.sym b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.sym new file mode 100644 index 000000000..4953fca4f --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.sym @@ -0,0 +1,32 @@ +(label) @1 +(label) @begin +(label) @end +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@return +(byte) main::i +(byte) main::i#1 i zp ZP_BYTE:3 151.5 +(byte) main::i#4 i zp ZP_BYTE:3 150.375 +(byte) main::j +(byte) main::j#1 j zp ZP_BYTE:2 16.5 +(byte) main::j#6 j zp ZP_BYTE:2 93.0 +(byte) main::k +(byte) main::k#1 reg byte x 1501.5 +(byte) main::k#2 reg byte x 600.5999999999999 +(word) main::w +(word) main::w#0 w zp ZP_WORD:6 2002.0 +(byte*) main::zpptr +(const byte*) main::zpptr#0 zpptr = (word/signed word) 4096 +(byte*) main::zpptr2 +(byte*) main::zpptr2#0 zpptr2 zp ZP_PTR_BYTE:4 1001.0 +(byte*) main::zpptr2#1 zpptr2 zp ZP_PTR_BYTE:4 2002.0 + +zp ZP_BYTE:2 [ main::j#6 main::j#1 ] +zp ZP_BYTE:3 [ main::i#4 main::i#1 ] +reg byte x [ main::k#2 main::k#1 ] +zp ZP_PTR_BYTE:4 [ main::zpptr2#0 main::zpptr2#1 ] +zp ZP_WORD:6 [ main::w#0 ] diff --git a/src/main/java/dk/camelot64/kickc/test/zpptr.kc b/src/main/java/dk/camelot64/kickc/test/zpptr.kc new file mode 100644 index 000000000..abccb4a75 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/zpptr.kc @@ -0,0 +1,14 @@ +void main() { + byte* zpptr = $1000; + for(byte j : 0..10) { + for(byte i : 0..10) { + for(byte k : 0..10) { + byte* zpptr2 = zpptr+i; + word w = (word)j; + // Testing byte* = byte* + word; + zpptr2 = zpptr2 + w; + *zpptr2 = k; + } + } + } +} \ No newline at end of file