From cd06dd20160c9e23f025ff91bf0e3babbba419a4 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Mon, 27 Nov 2017 00:34:59 +0100 Subject: [PATCH] Implemented type promotion & type checking of all assignments. --- .../java/dk/camelot64/kickc/Compiler.java | 3 + .../camelot64/kickc/fragment/AsmFragment.java | 2 +- .../kickc/fragment/asm/zpwo1=cowo1.asm | 4 + .../dk/camelot64/kickc/model/Operator.java | 11 +- .../kickc/model/PointerDereference.java | 2 +- .../kickc/model/SymbolTypeInference.java | 95 +- .../kickc/passes/Pass1AddTypePromotions.java | 93 + .../kickc/passes/Pass2AssertTypeMatch.java | 39 + .../passes/Pass2ConstantIdentification.java | 9 +- .../kickc/passes/Pass2SsaAssertion.java | 19 +- .../dk/camelot64/kickc/test/TestPrograms.java | 10 + .../dk/camelot64/kickc/test/forclassicmin.kc | 2 +- .../dk/camelot64/kickc/test/ptr-complex.kc | 4 +- .../camelot64/kickc/test/ref/asm-clobber.log | 26 +- .../camelot64/kickc/test/ref/asm-clobber.sym | 2 +- .../kickc/test/ref/bitmap-bresenham.asm | 5 +- .../kickc/test/ref/bitmap-bresenham.cfg | 4 +- .../kickc/test/ref/bitmap-bresenham.log | 595 ++-- .../kickc/test/ref/bitmap-bresenham.sym | 28 +- .../kickc/test/ref/bitmap-plotter.asm | 5 +- .../kickc/test/ref/bitmap-plotter.cfg | 4 +- .../kickc/test/ref/bitmap-plotter.log | 563 ++-- .../kickc/test/ref/bitmap-plotter.sym | 28 +- .../dk/camelot64/kickc/test/ref/bresenham.log | 30 +- .../dk/camelot64/kickc/test/ref/bresenham.sym | 2 +- .../camelot64/kickc/test/ref/bresenhamarr.asm | 4 +- .../camelot64/kickc/test/ref/bresenhamarr.cfg | 2 +- .../camelot64/kickc/test/ref/bresenhamarr.log | 156 +- .../camelot64/kickc/test/ref/bresenhamarr.sym | 2 +- .../kickc/test/ref/callconstparam.cfg | 2 +- .../kickc/test/ref/callconstparam.log | 42 +- .../dk/camelot64/kickc/test/ref/casting.cfg | 4 +- .../dk/camelot64/kickc/test/ref/casting.log | 158 +- .../dk/camelot64/kickc/test/ref/casting.sym | 4 +- .../dk/camelot64/kickc/test/ref/chargen.log | 84 +- .../dk/camelot64/kickc/test/ref/chargen.sym | 6 +- .../kickc/test/ref/const-identification.log | 60 +- .../kickc/test/ref/const-identification.sym | 4 +- .../camelot64/kickc/test/ref/constantmin.log | 52 +- .../camelot64/kickc/test/ref/constantmin.sym | 4 +- .../dk/camelot64/kickc/test/ref/fibmem.log | 26 +- .../dk/camelot64/kickc/test/ref/fibmem.sym | 2 +- .../camelot64/kickc/test/ref/flipper-rex2.log | 104 +- .../camelot64/kickc/test/ref/flipper-rex2.sym | 8 +- .../kickc/test/ref/forclassicmin.log | 41 +- .../kickc/test/ref/forclassicmin.sym | 2 +- .../camelot64/kickc/test/ref/forrangemin.log | 52 +- .../camelot64/kickc/test/ref/forrangemin.sym | 4 +- .../dk/camelot64/kickc/test/ref/halfscii.log | 168 +- .../dk/camelot64/kickc/test/ref/halfscii.sym | 12 +- .../dk/camelot64/kickc/test/ref/ifmin.log | 30 +- .../dk/camelot64/kickc/test/ref/ifmin.sym | 2 +- .../dk/camelot64/kickc/test/ref/incd020.log | 24 +- .../dk/camelot64/kickc/test/ref/incd020.sym | 2 +- .../camelot64/kickc/test/ref/inmemarray.log | 30 +- .../camelot64/kickc/test/ref/inmemarray.sym | 2 +- .../camelot64/kickc/test/ref/inmemstring.log | 30 +- .../camelot64/kickc/test/ref/inmemstring.sym | 2 +- .../dk/camelot64/kickc/test/ref/iterarray.log | 26 +- .../dk/camelot64/kickc/test/ref/iterarray.sym | 2 +- .../dk/camelot64/kickc/test/ref/literals.log | 26 +- .../dk/camelot64/kickc/test/ref/literals.sym | 2 +- .../dk/camelot64/kickc/test/ref/loopnest.log | 26 +- .../dk/camelot64/kickc/test/ref/loopnest.sym | 2 +- .../dk/camelot64/kickc/test/ref/loopnest2.log | 26 +- .../dk/camelot64/kickc/test/ref/loopnest2.sym | 2 +- .../dk/camelot64/kickc/test/ref/modglobal.log | 18 +- .../dk/camelot64/kickc/test/ref/modglobal.sym | 2 +- .../camelot64/kickc/test/ref/modglobalmin.log | 18 +- .../camelot64/kickc/test/ref/modglobalmin.sym | 2 +- .../kickc/test/ref/overlap-allocation-2.log | 30 +- .../kickc/test/ref/overlap-allocation-2.sym | 2 +- .../kickc/test/ref/overlap-allocation.log | 28 +- .../kickc/test/ref/overlap-allocation.sym | 2 +- .../camelot64/kickc/test/ref/ptr-complex.cfg | 4 +- .../camelot64/kickc/test/ref/ptr-complex.log | 325 ++- .../camelot64/kickc/test/ref/ptr-complex.sym | 4 +- .../dk/camelot64/kickc/test/ref/ptrtest.cfg | 4 +- .../dk/camelot64/kickc/test/ref/ptrtest.log | 140 +- .../dk/camelot64/kickc/test/ref/ptrtest.sym | 4 +- .../camelot64/kickc/test/ref/ptrtestmin.log | 26 +- .../camelot64/kickc/test/ref/ptrtestmin.sym | 2 +- .../kickc/test/ref/scroll-clobber.log | 60 +- .../kickc/test/ref/scroll-clobber.sym | 4 +- .../dk/camelot64/kickc/test/ref/scroll.log | 128 +- .../dk/camelot64/kickc/test/ref/scroll.sym | 8 +- .../dk/camelot64/kickc/test/ref/scrollbig.cfg | 111 +- .../dk/camelot64/kickc/test/ref/scrollbig.log | 2538 +++++++++-------- .../dk/camelot64/kickc/test/ref/scrollbig.sym | 16 +- .../camelot64/kickc/test/ref/signed-bytes.cfg | 7 +- .../camelot64/kickc/test/ref/signed-bytes.log | 193 +- .../camelot64/kickc/test/ref/signed-bytes.sym | 8 +- .../dk/camelot64/kickc/test/ref/useglobal.log | 18 +- .../dk/camelot64/kickc/test/ref/useglobal.sym | 2 +- .../dk/camelot64/kickc/test/ref/voronoi.log | 60 +- .../dk/camelot64/kickc/test/ref/voronoi.sym | 4 +- .../camelot64/kickc/test/ref/zpparammin.log | 114 +- .../camelot64/kickc/test/ref/zpparammin.sym | 4 +- .../dk/camelot64/kickc/test/ref/zpptr.cfg | 2 +- .../dk/camelot64/kickc/test/ref/zpptr.log | 84 +- .../dk/camelot64/kickc/test/ref/zpptr.sym | 2 +- .../dk/camelot64/kickc/test/signed-bytes.kc | 2 +- .../dk/camelot64/kickc/test/typemismatch.kc | 5 + 103 files changed, 3670 insertions(+), 3133 deletions(-) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1.asm create mode 100644 src/main/java/dk/camelot64/kickc/passes/Pass1AddTypePromotions.java create mode 100644 src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java create mode 100644 src/main/java/dk/camelot64/kickc/test/typemismatch.kc diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index 0ff4f9b6b..310beec6b 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -81,6 +81,8 @@ public class Compiler { program.setGraph(controlFlowGraph); + new Pass1AddTypePromotions(program).addPromotions(); + log.append("INITIAL CONTROL FLOW GRAPH"); log.append(program.getGraph().toString(program)); @@ -122,6 +124,7 @@ public class Compiler { public void pass2AssertSSA(Program program) { List assertions = new ArrayList<>(); + assertions.add(new Pass2AssertTypeMatch(program)); assertions.add(new Pass2AssertSymbols(program)); assertions.add(new Pass2AssertBlocks(program)); assertions.add(new Pass2AssertNoCallParameters(program)); diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java index 0a098c8cf..2fb9bfefe 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java @@ -151,7 +151,7 @@ public class AsmFragment { } else { return "$ff & " + getAsmConstant(program, operand, Operator.BOOL_AND.getPrecedence(), codeScope); } - } else if (Operator.CAST_WORD.equals(operator) || Operator.CAST_SWORD.equals(operator)) { + } else if (Operator.CAST_WORD.equals(operator) || Operator.CAST_SWORD.equals(operator) || Operator.CAST_PTRBY.equals(operator)) { SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand); if(SymbolType.isWord(operandType) || SymbolType.isSWord(operandType)) { // No cast needed diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1.asm new file mode 100644 index 000000000..6e365a370 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=cowo1.asm @@ -0,0 +1,4 @@ +lda #<{cowo1} +sta {zpwo1} +lda #>{cowo1} +sta {zpwo1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/model/Operator.java b/src/main/java/dk/camelot64/kickc/model/Operator.java index dd6ddd0fe..670fcd015 100644 --- a/src/main/java/dk/camelot64/kickc/model/Operator.java +++ b/src/main/java/dk/camelot64/kickc/model/Operator.java @@ -101,6 +101,8 @@ public class Operator { return CAST_WORD; } else if (SymbolType.SWORD.equals(castType)) { return CAST_SWORD; + } else if (castType instanceof SymbolTypePointer && SymbolType.BYTE.equals(((SymbolTypePointer) castType).getElementType())) { + return CAST_PTRBY; } else { throw new RuntimeException("Unknown cast type " + castType); @@ -123,10 +125,11 @@ public class Operator { public static final Operator DEREF_IDX = new Operator("*idx", "_derefidx_", Type.BINARY, 2); public static final Operator SET_LOWBYTE = new Operator("lo=", "_setlo_", Type.BINARY, 2); public static final Operator SET_HIBYTE = new Operator("hi=", "_sethi_", Type.BINARY, 2); - public static final Operator CAST_BYTE = new Operator("_byte_", "_byte_", Type.UNARY, 2); - public static final Operator CAST_SBYTE = new Operator("_sbyte_", "_sbyte_", Type.UNARY, 2); - public static final Operator CAST_WORD = new Operator("_word_", "_word_", Type.UNARY, 2); - public static final Operator CAST_SWORD = new Operator("_sword_", "_sword_", Type.UNARY, 2); + public static final Operator CAST_BYTE = new Operator("((byte))", "_byte_", Type.UNARY, 2); + public static final Operator CAST_SBYTE = new Operator("((signed byte))", "_sbyte_", Type.UNARY, 2); + public static final Operator CAST_WORD = new Operator("((word))", "_word_", Type.UNARY, 2); + public static final Operator CAST_SWORD = new Operator("((signed word))", "_sword_", Type.UNARY, 2); + public static final Operator CAST_PTRBY = new Operator("((byte*))", "_ptrby_", Type.UNARY, 2); public static final Operator MULTIPLY = new Operator("*", "_mul_", Type.BINARY, 3); public static final Operator DIVIDE = new Operator("/", "_div_", Type.BINARY, 3); public static final Operator PLUS = new Operator("+", "_plus_", Type.BINARY, 4); diff --git a/src/main/java/dk/camelot64/kickc/model/PointerDereference.java b/src/main/java/dk/camelot64/kickc/model/PointerDereference.java index 7bc3ecd01..286e4af5c 100644 --- a/src/main/java/dk/camelot64/kickc/model/PointerDereference.java +++ b/src/main/java/dk/camelot64/kickc/model/PointerDereference.java @@ -3,6 +3,6 @@ package dk.camelot64.kickc.model; /** A dereferenced pointer */ public interface PointerDereference extends LValue { - Value getPointer(); + RValue getPointer(); } diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java index f9648c664..82650740b 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java +++ b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java @@ -15,6 +15,17 @@ public class SymbolTypeInference { * @return The type of the resulting value */ public static SymbolType inferType(ProgramScope programScope, Operator operator, RValue rValue) { + if (operator.equals(Operator.CAST_BYTE)) { + return SymbolType.BYTE; + } else if (operator.equals(Operator.CAST_SBYTE)) { + return SymbolType.SBYTE; + } else if (operator.equals(Operator.CAST_WORD)) { + return SymbolType.WORD; + } else if (operator.equals(Operator.CAST_SWORD)) { + return SymbolType.SWORD; + } else if (operator.equals(Operator.CAST_PTRBY)) { + return new SymbolTypePointer(SymbolType.BYTE); + } if (rValue instanceof ConstantValue) { ConstantValue value = ConstantValueCalculator.calcValue(programScope, operator, (ConstantValue) rValue); if (value != null) { @@ -72,13 +83,16 @@ public class SymbolTypeInference { public static SymbolType inferType(SymbolType type1, Operator operator, SymbolType type2) { - if (operator.equals(Operator.PLUS)) { + if (Operator.PLUS.equals(operator)) { return inferPlus(type1, type2); - } else if (operator.equals(Operator.MINUS)) { + } else if (Operator.MINUS.equals(operator)) { return inferMinus(type1, type2); + } else if(Operator.SET_HIBYTE.equals(operator)) { + return type1; + } else if(Operator.SET_LOWBYTE.equals(operator)) { + return type1; } - String op = operator.getOperator(); switch (op) { case "==": @@ -243,20 +257,20 @@ public class SymbolTypeInference { } - public static SymbolType inferType(ProgramScope programScope, RValue rValue) { + public static SymbolType inferType(ProgramScope symbols, RValue rValue) { SymbolType type = null; if (rValue instanceof VariableRef) { - Variable variable = programScope.getVariable((VariableRef) rValue); + Variable variable = symbols.getVariable((VariableRef) rValue); type = variable.getType(); } else if (rValue instanceof ConstantRef) { - ConstantVar constVar = programScope.getConstant((ConstantRef) rValue); + ConstantVar constVar = symbols.getConstant((ConstantRef) rValue); type = constVar.getType(); } else if (rValue instanceof Symbol) { Symbol rSymbol = (Symbol) rValue; type = rSymbol.getType(); } else if (rValue instanceof ConstantInteger) { ConstantInteger rInt = (ConstantInteger) rValue; - return rInt.getType(programScope); + return rInt.getType(symbols); } else if (rValue instanceof ConstantString) { type = SymbolType.STRING; } else if (rValue instanceof ConstantChar) { @@ -265,12 +279,14 @@ public class SymbolTypeInference { type = SymbolType.BOOLEAN; } else if (rValue instanceof ConstantUnary) { ConstantUnary constUnary = (ConstantUnary) rValue; - return inferType(programScope, constUnary.getOperator(), constUnary.getOperand()); + return inferType(symbols, constUnary.getOperator(), constUnary.getOperand()); } else if (rValue instanceof ConstantBinary) { ConstantBinary constBin = (ConstantBinary) rValue; - return inferType(programScope, constBin.getLeft(), constBin.getOperator(), constBin.getRight()); - } else if (rValue instanceof PointerDereferenceSimple) { - SymbolType pointerType = inferType(programScope, ((PointerDereferenceSimple) rValue).getPointer()); + return inferType(symbols, constBin.getLeft(), constBin.getOperator(), constBin.getRight()); + } else if (rValue instanceof ValueArray) { + type = inferTypeArray(symbols, (ValueArray)rValue); + } else if (rValue instanceof PointerDereference) { + SymbolType pointerType = inferType(symbols, ((PointerDereference) rValue).getPointer()); if (pointerType instanceof SymbolTypePointer) { return ((SymbolTypePointer) pointerType).getElementType(); } else { @@ -283,4 +299,61 @@ public class SymbolTypeInference { return type; } + private static SymbolType inferTypeArray(ProgramScope symbols, ValueArray array) { + SymbolType elmType = null; + for (RValue elm : array.getList()) { + SymbolType type = inferType(symbols, elm); + if(elmType==null) { + elmType = type; + } else { + // element type already defined - check for a match + if(!typeMatch(elmType, type)) { + throw new RuntimeException("Array element has type mismatch "+elm.toString()+" not matching type "+elmType.getTypeName()); + } + } + } + if(elmType!=null) { + return new SymbolTypeArray(elmType); + } else { + throw new RuntimeException("Cannot infer array element type "+array.toString()); + } + } + + public static SymbolType inferTypeRValue(ProgramScope symbols, StatementAssignment assignment) { + SymbolType rValueType; + RValue rValue1 = assignment.getrValue1(); + RValue rValue2 = assignment.getrValue2(); + if (assignment.getrValue1() == null && assignment.getOperator() == null) { + rValueType = inferType(symbols, rValue2); + } else if (assignment.getrValue1() == null) { + rValueType = inferType(symbols, assignment.getOperator(), rValue2); + } else { + rValueType = inferType(symbols, rValue1, assignment.getOperator(), rValue2); + } + return rValueType; + } + + /** + * Determine if lValue and rValue types match (the same types, not needing a cast). + * + * @param lValueType The lValue type + * @param rValueType The rvalue type + * @return true if the types match + */ + public static boolean typeMatch(SymbolType lValueType, SymbolType rValueType) { + if (lValueType.equals(rValueType)) { + // Types match directly + return true; + } else if (rValueType instanceof SymbolTypeInline && ((SymbolTypeInline) rValueType).getTypes().contains(lValueType)) { + // Types match because the right side is a constant that matches the left side + return true; + } else if (lValueType instanceof SymbolTypePointer && rValueType instanceof SymbolTypePointer) { + return typeMatch(((SymbolTypePointer) lValueType).getElementType(), ((SymbolTypePointer) rValueType).getElementType()); + } else if (SymbolType.STRING.equals(rValueType)) { + if(lValueType instanceof SymbolTypePointer && SymbolType.isByte(((SymbolTypePointer) lValueType).getElementType())) { + return true; + } + } + return false; + } } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AddTypePromotions.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AddTypePromotions.java new file mode 100644 index 000000000..161841e93 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1AddTypePromotions.java @@ -0,0 +1,93 @@ +package dk.camelot64.kickc.passes; + +import dk.camelot64.kickc.model.*; + +import java.util.List; +import java.util.ListIterator; + +/** + * Add casts in all assignments where types are not equal, but the rValue type can be promoted to the lValue type. + */ +public class Pass1AddTypePromotions { + + private Program program; + + public Pass1AddTypePromotions(Program program) { + this.program = program; + } + + public Program getProgram() { + return program; + } + + public ProgramScope getSymbols() { + return program.getScope(); + } + + public void addPromotions() { + for (ControlFlowBlock block : getProgram().getGraph().getAllBlocks()) { + List statements = block.getStatements(); + ListIterator stmtIt = statements.listIterator(); + while (stmtIt.hasNext()) { + Statement statement = stmtIt.next(); + if (statement instanceof StatementAssignment) { + getPromotionAssignment((StatementAssignment) statement, stmtIt); + } + // TODO: Implement promotion for calls + } + } + + } + + /** + * Examines an assignment to determine if a cast of the rValue is needed (the lvalue type and the rvalue type is not equal) + * and possible (the types are promotion compatible). + * + * If a promotion is needed it is added by adding a new tmp-var with a cast and modifying the statement. + * + * @param assignment The assignment to examine + * @param stmtIt Iterator allowing the method to add a tmp-var-assignment. + */ + private void getPromotionAssignment(StatementAssignment assignment, ListIterator stmtIt) { + LValue lValue = assignment.getlValue(); + SymbolType lValueType = SymbolTypeInference.inferType(getSymbols(), lValue); + SymbolType rValueType = SymbolTypeInference.inferTypeRValue(getSymbols(), assignment); + if (SymbolTypeInference.typeMatch(lValueType, rValueType)) { + return; + } + // No direct type match - attempt promotion + if(canPromote(lValueType, rValueType)) { + // Promotion possible - add tmp-var and a cast + if(assignment.getOperator()==null) { + // No operator - add cast directly! + assignment.setOperator(Operator.getCastUnary(lValueType)); + } else { + throw new RuntimeException("Tmp-var promotions not implemented yet "+assignment); + } + } else { + String msg = "ERROR! Type mismatch (" + lValueType.getTypeName() + ") cannot be assigned from (" + rValueType.getTypeName() + "). " + + "In " + assignment.toString(getProgram(), false); + getProgram().getLog().append(msg); + throw new CompileError(msg); + } + } + + /** + * Determines if it is possible to promote (cast without loss) one type to another + * @param lValueType The type of the lValue + * @param rValueType The type of the rValue (that will be cast) + * @return True if a cast is possible without any loss + */ + private boolean canPromote(SymbolType lValueType, SymbolType rValueType) { + if(lValueType instanceof SymbolTypePointer && SymbolType.isWord(rValueType)) { + return true; + } + if(lValueType.equals(SymbolType.WORD) && SymbolType.isByte(rValueType)) { + return true; + } + // No type promotion found + return false; + } + + +} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java new file mode 100644 index 000000000..5456b0262 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java @@ -0,0 +1,39 @@ +package dk.camelot64.kickc.passes; + +import dk.camelot64.kickc.model.*; + +/** + * Asserts that types match in all assignments and calculations + */ +public class Pass2AssertTypeMatch extends Pass2SsaAssertion { + + public Pass2AssertTypeMatch(Program program) { + super(program); + } + + @Override + public void check() throws AssertionFailed { + for (ControlFlowBlock block : getGraph().getAllBlocks()) { + for (Statement statement : block.getStatements()) { + if (statement instanceof StatementAssignment) { + checkAssignment((StatementAssignment) statement); + } + // TODO: Implement checking for calls / conditional jumps / ... + } + } + + } + + private void checkAssignment(StatementAssignment statement) { + LValue lValue = statement.getlValue(); + SymbolType lValueType = SymbolTypeInference.inferType(getSymbols(), lValue); + SymbolType rValueType = SymbolTypeInference.inferTypeRValue(getSymbols(), statement); + if(SymbolTypeInference.typeMatch(lValueType, rValueType)) { + return; + } + // Types do not match + getLog().append("ERROR! Type mismatch (" + lValueType.getTypeName() + ") cannot be assigned from (" + rValueType.getTypeName() + "). In " + statement.toString(getProgram(), false)); + throw new CompileError("ERROR! Type mismatch (" + lValueType.getTypeName() + ") cannot be assigned from (" + rValueType.getTypeName() + "). In " + statement.toString(getProgram(), false)); + } + +} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java index 0e07828ca..feadbef65 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java @@ -179,10 +179,11 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization { case "--": case "<": case ">": - case "_byte_": - case "_sbyte_": - case "_word_": - case "_sword_": + case "((byte))": + case "((sbyte))": + case "((word))": + case "((signed word))": + case "((byte*))": return new ConstantUnary(operator, c); case "*": { // pointer dereference - not constant return null; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java index 7f8a9d8e3..49ea24720 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java @@ -1,5 +1,6 @@ package dk.camelot64.kickc.passes; +import dk.camelot64.kickc.CompileLog; import dk.camelot64.kickc.model.ControlFlowGraph; import dk.camelot64.kickc.model.Program; import dk.camelot64.kickc.model.ProgramScope; @@ -7,20 +8,26 @@ import dk.camelot64.kickc.model.ProgramScope; /** Assertion checking that a pass 2 representation of the program is consistent */ public abstract class Pass2SsaAssertion { - private ControlFlowGraph graph; - private ProgramScope programScope; + private Program program; public Pass2SsaAssertion(Program program) { - this.graph = program.getGraph(); - this.programScope = program.getScope(); + this.program = program; } public ControlFlowGraph getGraph() { - return graph; + return program.getGraph(); } public ProgramScope getSymbols() { - return programScope; + return program.getScope(); + } + + public CompileLog getLog() { + return program.getLog(); + } + + public Program getProgram() { + return program; } public abstract void check() throws AssertionFailed; diff --git a/src/main/java/dk/camelot64/kickc/test/TestPrograms.java b/src/main/java/dk/camelot64/kickc/test/TestPrograms.java index 0ab65ce92..9bcedf3f5 100644 --- a/src/main/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/main/java/dk/camelot64/kickc/test/TestPrograms.java @@ -210,6 +210,16 @@ public class TestPrograms extends TestCase { fail("Expected compile error."); } + public void testTypeMismatch() throws IOException, URISyntaxException { + try { + compileAndCompare("typemismatch"); + } catch (CompileError e) { + // expecting error! + return; + } + fail("Expected compile error."); + } + private void compileAndCompare(String filename) throws IOException, URISyntaxException { TestPrograms tester = new TestPrograms(); diff --git a/src/main/java/dk/camelot64/kickc/test/forclassicmin.kc b/src/main/java/dk/camelot64/kickc/test/forclassicmin.kc index a27c0a1cb..d40af9616 100644 --- a/src/main/java/dk/camelot64/kickc/test/forclassicmin.kc +++ b/src/main/java/dk/camelot64/kickc/test/forclassicmin.kc @@ -1,7 +1,7 @@ // Minimal classic for() loop -byte* SCREEN = $0400; +byte* SCREEN = (byte*)$0400; void main() { for(byte i=0; i!=100; i++) { diff --git a/src/main/java/dk/camelot64/kickc/test/ptr-complex.kc b/src/main/java/dk/camelot64/kickc/test/ptr-complex.kc index adc55890c..468ee114c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ptr-complex.kc +++ b/src/main/java/dk/camelot64/kickc/test/ptr-complex.kc @@ -24,8 +24,8 @@ void main() { } // Incrementing directly on a word - ++*$d020; - --*($d000+$21); + ++*(byte*)$d020; + --*(byte*)($d000+$21); // Increment on a const named pointer byte* BGCOL = $d020; 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 e8b9d7440..e935e258b 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 @@ -70,7 +70,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -120,7 +120,7 @@ main::@return: scope:[main] from main::@8 Removing empty block main::@8 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -169,7 +169,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -222,7 +222,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 ) @@ -288,7 +288,7 @@ main::@return: scope:[main] from main::@7 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 ) @@ -406,7 +406,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 ) @@ -476,7 +476,7 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#8 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -538,7 +538,7 @@ Self Phi Eliminated (byte) main::k#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -600,7 +600,7 @@ Redundant Phi (byte) main::k#2 (byte) main::k#4 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -658,7 +658,7 @@ Simple Condition (boolean~) main::$3 if((byte) main::k#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -705,7 +705,7 @@ main::@return: scope:[main] from main::@7 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 0 Constant (const byte) main::j#0 = 0 Constant (const byte) main::k#0 = 0 @@ -945,7 +945,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -1801,7 +1801,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 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 c7665caf1..985c9b8cf 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(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.asm b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm index 57f1e5f47..7754ba74f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm @@ -392,10 +392,11 @@ init_plot_tables: { inx cpx #0 bne b1 - lda #0 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 - tax + ldx #0 b3: txa and #7 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 42b817515..9dcd1cffc 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 @@ -177,7 +177,7 @@ 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/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 ] ) + [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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 ] ) @@ -313,7 +313,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p [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/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::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main: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 ] ) 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 cb6a46149..26991e5df 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 @@ -709,27 +709,27 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS ← (word) 55296 - (byte*) BGCOL ← (word) 53280 - (byte*) FGCOL ← (word) 53281 - (byte*) SCROLL ← (word) 53270 - (byte*) D018 ← (word) 53272 - (byte*) D011 ← (word) 53265 + (byte*) COLS ← ((byte*)) (word) 55296 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) FGCOL ← ((byte*)) (word) 53281 + (byte*) SCROLL ← ((byte*)) (word) 53270 + (byte*) D018 ← ((byte*)) (word) 53272 + (byte*) D011 ← ((byte*)) (word) 53265 (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*) D016 ← ((byte*)) (word) 53270 (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*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit ← ((byte*)) (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 @@ -1011,7 +1011,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x ← ((byte*)) (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 @@ -1057,7 +1057,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs ← ((byte*)) (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 @@ -1151,27 +1151,27 @@ Removing empty block @9 Removing empty block init_screen::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS ← (word) 55296 - (byte*) BGCOL ← (word) 53280 - (byte*) FGCOL ← (word) 53281 - (byte*) SCROLL ← (word) 53270 - (byte*) D018 ← (word) 53272 - (byte*) D011 ← (word) 53265 + (byte*) COLS ← ((byte*)) (word) 55296 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) FGCOL ← ((byte*)) (word) 53281 + (byte*) SCROLL ← ((byte*)) (word) 53270 + (byte*) D018 ← ((byte*)) (word) 53272 + (byte*) D011 ← ((byte*)) (word) 53265 (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*) D016 ← ((byte*)) (word) 53270 (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*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit ← ((byte*)) (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 @@ -1399,7 +1399,7 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 return to:@return plot: scope:[plot] from - (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (byte*) plot::plotter_x ← ((byte*)) (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 @@ -1443,7 +1443,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs ← ((byte*)) (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 @@ -1502,27 +1502,27 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) COLS ← (word) 55296 - (byte*) BGCOL ← (word) 53280 - (byte*) FGCOL ← (word) 53281 - (byte*) SCROLL ← (word) 53270 - (byte*) D018 ← (word) 53272 - (byte*) D011 ← (word) 53265 + (byte*) COLS ← ((byte*)) (word) 55296 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) FGCOL ← ((byte*)) (word) 53281 + (byte*) SCROLL ← ((byte*)) (word) 53270 + (byte*) D018 ← ((byte*)) (word) 53272 + (byte*) D011 ← ((byte*)) (word) 53265 (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*) D016 ← ((byte*)) (word) 53270 (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*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit ← ((byte*)) (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 @@ -1834,7 +1834,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x ← ((byte*)) (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 @@ -1878,7 +1878,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs ← ((byte*)) (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 @@ -1948,27 +1948,27 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -2726,7 +2726,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -2801,7 +2801,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -2897,27 +2897,27 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -3675,7 +3675,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -3750,7 +3750,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -4732,27 +4732,27 @@ Culled Empty Block (label) @11 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -5494,7 +5494,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -5569,7 +5569,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -5677,27 +5677,27 @@ Inversing boolean not (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tab Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -6428,7 +6428,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -6502,7 +6502,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -6776,27 +6776,27 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -7207,7 +7207,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -7264,7 +7264,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -7439,27 +7439,27 @@ Alias (byte[]) plot_yhi#18 = (byte[]) plot_yhi#7 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -7814,7 +7814,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -7864,7 +7864,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -8046,27 +8046,27 @@ Self Phi Eliminated (byte*) SCREEN#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -8421,7 +8421,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -8471,7 +8471,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -8596,27 +8596,27 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#1 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -8923,7 +8923,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -8967,7 +8967,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -9033,27 +9033,27 @@ Redundant Phi (byte[]) plot_bit#1 (byte[]) plot_bit#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -9355,7 +9355,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -9399,7 +9399,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -9482,27 +9482,27 @@ Simple Condition (boolean~) init_screen::$3 if((byte*) init_screen::c#1!=(byte*~ Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) COLS#0 ← (word) 55296 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) FGCOL#0 ← (word) 53281 - (byte*) SCROLL#0 ← (word) 53270 - (byte*) D018#0 ← (word) 53272 - (byte*) D011#0 ← (word) 53265 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) D016#0 ← ((byte*)) (word) 53270 (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*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 + (byte[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (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 @@ -9788,7 +9788,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -9830,7 +9830,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -9884,37 +9884,37 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 to:@end @end: scope:[] from @10 -Constant (const byte*) COLS#0 = 55296 -Constant (const byte*) BGCOL#0 = 53280 -Constant (const byte*) FGCOL#0 = 53281 -Constant (const byte*) SCROLL#0 = 53270 -Constant (const byte*) D018#0 = 53272 -Constant (const byte*) D011#0 = 53265 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) BGCOL#0 = ((byte*))53280 +Constant (const byte*) FGCOL#0 = ((byte*))53281 +Constant (const byte*) SCROLL#0 = ((byte*))53270 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) D011#0 = ((byte*))53265 Constant (const byte) RST8#0 = 128 Constant (const byte) ECM#0 = 64 Constant (const byte) BMM#0 = 32 Constant (const byte) DEN#0 = 16 Constant (const byte) RSEL#0 = 8 -Constant (const byte*) D016#0 = 53270 +Constant (const byte*) D016#0 = ((byte*))53270 Constant (const byte) MCM#0 = 16 Constant (const byte) CSEL#0 = 8 -Constant (const byte*) SCREEN#0 = 1024 -Constant (const byte*) BITMAP#0 = 8192 -Constant (const byte[]) plot_xlo#0 = 4096 -Constant (const byte[]) plot_xhi#0 = 4352 -Constant (const byte[]) plot_ylo#0 = 4608 -Constant (const byte[]) plot_yhi#0 = 4864 -Constant (const byte[]) plot_bit#0 = 5120 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte*) BITMAP#0 = ((byte*))8192 +Constant (const byte[]) plot_xlo#0 = ((byte*))4096 +Constant (const byte[]) plot_xhi#0 = ((byte*))4352 +Constant (const byte[]) plot_ylo#0 = ((byte*))4608 +Constant (const byte[]) plot_yhi#0 = ((byte*))4864 +Constant (const byte[]) plot_bit#0 = ((byte*))5120 Constant (const byte[]) lines_x#0 = { 60, 80, 110, 80, 60, 40, 10, 40, 60 } 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_x#0 = ((byte*))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 -Constant (const byte*) init_plot_tables::yoffs#0 = 0 +Constant (const byte*) init_plot_tables::yoffs#0 = ((byte*))0 Constant (const byte) init_plot_tables::y#0 = 0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -12749,7 +12749,7 @@ Inlining constant with var siblings (const byte*) init_screen::c#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 plot::plotter_x#0 = ((byte*))(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 @@ -12757,7 +12757,7 @@ 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 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::yoffs#0 = ((byte*))(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_screen::b#0 = (const byte*) BITMAP#0 @@ -13040,7 +13040,7 @@ 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/signed byte/word/signed word) 0 hi= (byte~) plot::$0 + (byte*) plot::plotter_x#1 ← ((byte*))(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 @@ -13075,7 +13075,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p 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/signed byte/word/signed word) 0 ) + (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) (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 @@ -13124,27 +13124,27 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 = (word) 53280 +(const byte*) BGCOL#0 = ((byte*))(word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 = (word/signed word) 8192 +(const byte*) BITMAP#0 = ((byte*))(word/signed word) 8192 (byte) BMM (const byte) BMM#0 = (byte/signed byte/word/signed word) 32 (byte*) COLS -(const byte*) COLS#0 = (word) 55296 +(const byte*) COLS#0 = ((byte*))(word) 55296 (byte) CSEL (const byte) CSEL#0 = (byte/signed byte/word/signed word) 8 (byte*) D011 -(const byte*) D011#0 = (word) 53265 +(const byte*) D011#0 = ((byte*))(word) 53265 (byte*) D016 -(const byte*) D016#0 = (word) 53270 +(const byte*) D016#0 = ((byte*))(word) 53270 (byte*) D018 -(const byte*) D018#0 = (word) 53272 +(const byte*) D018#0 = ((byte*))(word) 53272 (byte) DEN (const byte) DEN#0 = (byte/signed byte/word/signed word) 16 (byte) ECM (const byte) ECM#0 = (byte/signed byte/word/signed word) 64 (byte*) FGCOL -(const byte*) FGCOL#0 = (word) 53281 +(const byte*) FGCOL#0 = ((byte*))(word) 53281 (byte) MCM (const byte) MCM#0 = (byte/signed byte/word/signed word) 16 (byte) RSEL @@ -13152,9 +13152,9 @@ FINAL SYMBOL TABLE (byte) RST8 (const byte) RST8#0 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 = (word) 53270 +(const byte*) SCROLL#0 = ((byte*))(word) 53270 (void()) init_plot_tables() (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$10 @@ -13428,15 +13428,15 @@ FINAL SYMBOL TABLE (byte) plot::y#3 (byte) plot::y#4 (byte[]) plot_bit -(const byte[]) plot_bit#0 = (word/signed word) 5120 +(const byte[]) plot_bit#0 = ((byte*))(word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 = (word/signed word) 4352 +(const byte[]) plot_xhi#0 = ((byte*))(word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 = (word/signed word) 4096 +(const byte[]) plot_xlo#0 = ((byte*))(word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 = (word/signed word) 4864 +(const byte[]) plot_yhi#0 = ((byte*))(word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 = (word/signed word) 4608 +(const byte[]) plot_ylo#0 = ((byte*))(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) @@ -13693,7 +13693,7 @@ 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/signed byte/word/signed word) 0 hi= (byte~) plot::$0 + (byte*) plot::plotter_x#1 ← ((byte*))(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 @@ -13878,7 +13878,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_ 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/signed byte/word/signed word) 0 ) + (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/((byte*))(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 @@ -14208,7 +14208,7 @@ 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/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] + [156] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] [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 ] @@ -14394,7 +14394,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_ [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/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [260] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/((byte*))(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 ] @@ -14767,7 +14767,7 @@ 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/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] + [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] [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 ] @@ -14903,7 +14903,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p [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/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] [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 ] @@ -15126,7 +15126,7 @@ 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/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 ] ) + [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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 ] ) @@ -15262,7 +15262,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p [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/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::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main: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 ] ) @@ -16441,7 +16441,7 @@ plot: { ldx x lda plot_xhi,x sta _0 - //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 + //SEG199 [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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=cowo1_sethi_zpby1 lda _0 sta plotter_x+1 lda #<0 @@ -16807,10 +16807,10 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs - lda #0 + lda #>0 sta yoffs+1 //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 @@ -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 [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 [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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 ] @@ -17073,7 +17073,7 @@ Statement [72] (byte) line::yd#10 ← (byte) line::y0#0 - (byte) line::y1#0 [ li 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 [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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] (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 @@ -17851,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/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 + //SEG199 [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -18152,10 +18152,10 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs - lda #0 + lda #>0 sta yoffs+1 //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 @@ -18292,8 +18292,6 @@ Removing instruction lda yd Removing instruction lda yd Removing instruction lda yd Removing instruction ldy #0 -Removing instruction lda #0 -Replacing instruction ldx #0 with TAX Replacing instruction lda #0 with TYA Succesful ASM optimization Pass5UnnecesaryLoadElimination ASSEMBLER @@ -18781,7 +18779,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/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 + //SEG199 [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -19081,12 +19079,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + 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] b3_from_b4: @@ -19735,7 +19734,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/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 + //SEG199 [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -20022,12 +20021,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + 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] //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 @@ -20648,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/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 + //SEG199 [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -20919,12 +20919,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + 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] //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 @@ -21495,7 +21496,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/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 + //SEG199 [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -21765,12 +21766,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + ldx #0 //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 @@ -21889,27 +21891,27 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (word) 53280 +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 +(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word) 8192 (byte) BMM (const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (byte*) COLS -(const byte*) COLS#0 COLS = (word) 55296 +(const byte*) COLS#0 COLS = ((byte*))(word) 55296 (byte) CSEL (const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (byte*) D011 -(const byte*) D011#0 D011 = (word) 53265 +(const byte*) D011#0 D011 = ((byte*))(word) 53265 (byte*) D016 -(const byte*) D016#0 D016 = (word) 53270 +(const byte*) D016#0 D016 = ((byte*))(word) 53270 (byte*) D018 -(const byte*) D018#0 D018 = (word) 53272 +(const byte*) D018#0 D018 = ((byte*))(word) 53272 (byte) DEN (const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (byte) ECM (const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (byte*) FGCOL -(const byte*) FGCOL#0 FGCOL = (word) 53281 +(const byte*) FGCOL#0 FGCOL = ((byte*))(word) 53281 (byte) MCM (const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (byte) RSEL @@ -21917,9 +21919,9 @@ FINAL SYMBOL TABLE (byte) RST8 (const byte) RST8#0 RST8 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 SCROLL = (word) 53270 +(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270 (void()) init_plot_tables() (byte~) init_plot_tables::$0 reg byte a 22.0 (byte~) init_plot_tables::$10 reg byte a 22.0 @@ -22193,15 +22195,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/signed word) 5120 +(const byte[]) plot_bit#0 plot_bit = ((byte*))(word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 +(const byte[]) plot_xhi#0 plot_xhi = ((byte*))(word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 +(const byte[]) plot_xlo#0 plot_xlo = ((byte*))(word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 +(const byte[]) plot_yhi#0 plot_yhi = ((byte*))(word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 plot_ylo = (word/signed word) 4608 +(const byte[]) plot_ylo#0 plot_ylo = ((byte*))(word/signed word) 4608 zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ] zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 lines::$2 line::x1#0 ] @@ -22686,7 +22688,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/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 + //SEG199 [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main: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=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -22956,12 +22958,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG316 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + ldx #0 //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 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 1e3e91a07..5eca31c81 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 @@ -2,27 +2,27 @@ (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (word) 53280 +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 +(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word) 8192 (byte) BMM (const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (byte*) COLS -(const byte*) COLS#0 COLS = (word) 55296 +(const byte*) COLS#0 COLS = ((byte*))(word) 55296 (byte) CSEL (const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (byte*) D011 -(const byte*) D011#0 D011 = (word) 53265 +(const byte*) D011#0 D011 = ((byte*))(word) 53265 (byte*) D016 -(const byte*) D016#0 D016 = (word) 53270 +(const byte*) D016#0 D016 = ((byte*))(word) 53270 (byte*) D018 -(const byte*) D018#0 D018 = (word) 53272 +(const byte*) D018#0 D018 = ((byte*))(word) 53272 (byte) DEN (const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (byte) ECM (const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (byte*) FGCOL -(const byte*) FGCOL#0 FGCOL = (word) 53281 +(const byte*) FGCOL#0 FGCOL = ((byte*))(word) 53281 (byte) MCM (const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (byte) RSEL @@ -30,9 +30,9 @@ (byte) RST8 (const byte) RST8#0 RST8 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 SCROLL = (word) 53270 +(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270 (void()) init_plot_tables() (byte~) init_plot_tables::$0 reg byte a 22.0 (byte~) init_plot_tables::$10 reg byte a 22.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/signed word) 5120 +(const byte[]) plot_bit#0 plot_bit = ((byte*))(word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 +(const byte[]) plot_xhi#0 plot_xhi = ((byte*))(word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 +(const byte[]) plot_xlo#0 plot_xlo = ((byte*))(word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 +(const byte[]) plot_yhi#0 plot_yhi = ((byte*))(word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 plot_ylo = (word/signed word) 4608 +(const byte[]) plot_ylo#0 plot_ylo = ((byte*))(word/signed word) 4608 zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ] zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 lines::$2 line::x1#0 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.asm b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.asm index 2098d96a1..9deaeb4ca 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.asm @@ -116,10 +116,11 @@ init_plot_tables: { inx cpx #0 bne b1 - lda #0 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 - tax + ldx #0 b3: txa and #7 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 570fc3303..544432f8a 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 @@ -48,7 +48,7 @@ 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/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 ] ) + [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main: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 ] ) @@ -82,7 +82,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p [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/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::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main: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 ] ) 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 e3a451f00..7f7bc68b8 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 @@ -333,22 +333,22 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) D011 ← (word) 53265 + (byte*) D011 ← ((byte*)) (word) 53265 (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*) RASTER ← ((byte*)) (word) 53266 + (byte*) D016 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP ← (word/signed word) 8192 + (byte*) D018 ← ((byte*)) (word) 53272 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) FGCOL ← ((byte*)) (word) 53281 + (byte*) COLS ← ((byte*)) (word) 55296 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 @@ -400,14 +400,14 @@ plots::@return: scope:[plots] from plots::@2 return to:@return @2: scope:[] from @1 - (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[]) plot_xlo ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit ← ((byte*)) (word/signed word) 5120 to:@3 plot: scope:[plot] from - (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (byte*) plot::plotter_x ← ((byte*)) (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 @@ -453,7 +453,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs ← ((byte*)) (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 @@ -522,22 +522,22 @@ Removing empty block @4 Removing empty block init_screen::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) D011 ← (word) 53265 + (byte*) D011 ← ((byte*)) (word) 53265 (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*) RASTER ← ((byte*)) (word) 53266 + (byte*) D016 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP ← (word/signed word) 8192 + (byte*) D018 ← ((byte*)) (word) 53272 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) FGCOL ← ((byte*)) (word) 53281 + (byte*) COLS ← ((byte*)) (word) 55296 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 @@ -585,14 +585,14 @@ plots::@return: scope:[plots] from plots::@1 return to:@return @2: scope:[] from @1 - (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[]) plot_xlo ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from - (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (byte*) plot::plotter_x ← ((byte*)) (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 @@ -636,7 +636,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs ← ((byte*)) (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 @@ -695,22 +695,22 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) D011 ← (word) 53265 + (byte*) D011 ← ((byte*)) (word) 53265 (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*) RASTER ← ((byte*)) (word) 53266 + (byte*) D016 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP ← (word/signed word) 8192 + (byte*) D018 ← ((byte*)) (word) 53272 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) FGCOL ← ((byte*)) (word) 53281 + (byte*) COLS ← ((byte*)) (word) 55296 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 0 @@ -768,14 +768,14 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (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[]) plot_xlo ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 + (byte*) plot::plotter_x ← ((byte*)) (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 @@ -819,7 +819,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs ← ((byte*)) (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 @@ -888,22 +888,22 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) D011#0 ← (word) 53265 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) D016#0 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 (byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 ) @@ -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/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[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 (byte[]) plot_bit#1 ← phi( plots::@1/(byte[]) plot_bit#3 ) @@ -1103,7 +1103,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -1178,7 +1178,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -1275,22 +1275,22 @@ 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*) D011#0 ← ((byte*)) (word) 53265 (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*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) D016#0 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 (byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 ) @@ -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/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[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 (byte[]) plot_bit#1 ← phi( plots::@1/(byte[]) plot_bit#3 ) @@ -1490,7 +1490,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -1565,7 +1565,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -2021,22 +2021,22 @@ Culled Empty Block (label) @6 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) D011#0 ← (word) 53265 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) D016#0 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 (byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 ) @@ -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/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[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 (byte[]) plot_bit#1 ← phi( plots::@1/(byte[]) plot_bit#3 ) @@ -2236,7 +2236,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -2311,7 +2311,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -2409,22 +2409,22 @@ Inversing boolean not (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tab Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) D011#0 ← (word) 53265 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) D016#0 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 (byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 ) @@ -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/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[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 (byte[]) plot_bit#1 ← phi( plots::@1/(byte[]) plot_bit#3 ) @@ -2624,7 +2624,7 @@ 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/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -2698,7 +2698,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -2854,22 +2854,22 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) D011#0 ← (word) 53265 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) D016#0 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 @@ -2946,14 +2946,14 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (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[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -3010,7 +3010,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -3104,22 +3104,22 @@ Alias (byte[]) plot_yhi#2 = (byte[]) plot_yhi#4 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) D011#0 ← (word) 53265 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) D016#0 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 @@ -3196,14 +3196,14 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (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[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -3253,7 +3253,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -3375,22 +3375,22 @@ Self Phi Eliminated (byte*) SCREEN#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) D011#0 ← (word) 53265 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) D016#0 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 @@ -3467,14 +3467,14 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (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[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -3524,7 +3524,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -3619,22 +3619,22 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#1 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) D011#0 ← (word) 53265 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) D016#0 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 @@ -3693,14 +3693,14 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (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[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -3744,7 +3744,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -3813,22 +3813,22 @@ Simple Condition (boolean~) init_screen::$3 if((byte*) init_screen::c#1!=(byte*~ Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) D011#0 ← (word) 53265 + (byte*) D011#0 ← ((byte*)) (word) 53265 (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*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) D016#0 ← ((byte*)) (word) 53270 (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/signed word) 1024 - (byte*) BITMAP#0 ← (word/signed word) 8192 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) FGCOL#0 ← ((byte*)) (word) 53281 + (byte*) COLS#0 ← ((byte*)) (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) BITMAP#0 ← ((byte*)) (word/signed word) 8192 to:@1 main: scope:[main] from @5 *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 @@ -3885,14 +3885,14 @@ plots::@return: scope:[plots] from plots::@3 return to:@return @2: scope:[] from @1 - (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[]) plot_xlo#0 ← ((byte*)) (word/signed word) 4096 + (byte[]) plot_xhi#0 ← ((byte*)) (word/signed word) 4352 + (byte[]) plot_ylo#0 ← ((byte*)) (word/signed word) 4608 + (byte[]) plot_yhi#0 ← ((byte*)) (word/signed word) 4864 + (byte[]) plot_bit#0 ← ((byte*)) (word/signed word) 5120 to:@5 plot: scope:[plot] from plots::@1 - (byte*) plot::plotter_x#0 ← (byte/signed byte/word/signed word) 0 + (byte*) plot::plotter_x#0 ← ((byte*)) (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 @@ -3934,7 +3934,7 @@ init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 (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/signed byte/word/signed word) 0 + (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (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 @@ -3988,37 +3988,37 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 to:@end @end: scope:[] from @5 -Constant (const byte*) D011#0 = 53265 +Constant (const byte*) D011#0 = ((byte*))53265 Constant (const byte) RST8#0 = 128 Constant (const byte) ECM#0 = 64 Constant (const byte) BMM#0 = 32 Constant (const byte) DEN#0 = 16 Constant (const byte) RSEL#0 = 8 -Constant (const byte*) RASTER#0 = 53266 -Constant (const byte*) D016#0 = 53270 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) D016#0 = ((byte*))53270 Constant (const byte) MCM#0 = 16 Constant (const byte) CSEL#0 = 8 -Constant (const byte*) D018#0 = 53272 -Constant (const byte*) BGCOL#0 = 53280 -Constant (const byte*) FGCOL#0 = 53281 -Constant (const byte*) COLS#0 = 55296 -Constant (const byte*) SCREEN#0 = 1024 -Constant (const byte*) BITMAP#0 = 8192 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) BGCOL#0 = ((byte*))53280 +Constant (const byte*) FGCOL#0 = ((byte*))53281 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte*) BITMAP#0 = ((byte*))8192 Constant (const byte[]) plots_x#0 = { 60, 80, 110, 80, 60, 40, 10, 40 } Constant (const byte[]) plots_y#0 = { 10, 40, 60, 80, 110, 80, 60, 40 } Constant (const byte) plots_cnt#0 = 8 Constant (const byte) plots::i#0 = 0 -Constant (const byte[]) plot_xlo#0 = 4096 -Constant (const byte[]) plot_xhi#0 = 4352 -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_xlo#0 = ((byte*))4096 +Constant (const byte[]) plot_xhi#0 = ((byte*))4352 +Constant (const byte[]) plot_ylo#0 = ((byte*))4608 +Constant (const byte[]) plot_yhi#0 = ((byte*))4864 +Constant (const byte[]) plot_bit#0 = ((byte*))5120 +Constant (const byte*) plot::plotter_x#0 = ((byte*))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 -Constant (const byte*) init_plot_tables::yoffs#0 = 0 +Constant (const byte*) init_plot_tables::yoffs#0 = ((byte*))0 Constant (const byte) init_plot_tables::y#0 = 0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -4796,14 +4796,14 @@ 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 plot::plotter_x#0 = ((byte*))(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/signed byte/word/signed word) 3 Constant inlined main::$0 = (const byte) BMM#0|(const byte) DEN#0 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::yoffs#0 = ((byte*))(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_screen::b#0 = (const byte*) BITMAP#0 @@ -4855,7 +4855,7 @@ 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/signed byte/word/signed word) 0 hi= (byte~) plot::$0 + (byte*) plot::plotter_x#1 ← ((byte*))(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 @@ -4890,7 +4890,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p 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/signed byte/word/signed word) 0 ) + (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) (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 @@ -4939,37 +4939,37 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 = (word) 53280 +(const byte*) BGCOL#0 = ((byte*))(word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 = (word/signed word) 8192 +(const byte*) BITMAP#0 = ((byte*))(word/signed word) 8192 (byte) BMM (const byte) BMM#0 = (byte/signed byte/word/signed word) 32 (byte*) COLS -(const byte*) COLS#0 = (word) 55296 +(const byte*) COLS#0 = ((byte*))(word) 55296 (byte) CSEL (const byte) CSEL#0 = (byte/signed byte/word/signed word) 8 (byte*) D011 -(const byte*) D011#0 = (word) 53265 +(const byte*) D011#0 = ((byte*))(word) 53265 (byte*) D016 -(const byte*) D016#0 = (word) 53270 +(const byte*) D016#0 = ((byte*))(word) 53270 (byte*) D018 -(const byte*) D018#0 = (word) 53272 +(const byte*) D018#0 = ((byte*))(word) 53272 (byte) DEN (const byte) DEN#0 = (byte/signed byte/word/signed word) 16 (byte) ECM (const byte) ECM#0 = (byte/signed byte/word/signed word) 64 (byte*) FGCOL -(const byte*) FGCOL#0 = (word) 53281 +(const byte*) FGCOL#0 = ((byte*))(word) 53281 (byte) MCM (const byte) MCM#0 = (byte/signed byte/word/signed word) 16 (byte*) RASTER -(const byte*) RASTER#0 = (word) 53266 +(const byte*) RASTER#0 = ((byte*))(word) 53266 (byte) RSEL (const byte) RSEL#0 = (byte/signed byte/word/signed word) 8 (byte) RST8 (const byte) RST8#0 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) init_plot_tables() (byte~) init_plot_tables::$0 (byte~) init_plot_tables::$10 @@ -5035,15 +5035,15 @@ FINAL SYMBOL TABLE (byte) plot::y (byte) plot::y#0 (byte[]) plot_bit -(const byte[]) plot_bit#0 = (word/signed word) 5120 +(const byte[]) plot_bit#0 = ((byte*))(word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 = (word/signed word) 4352 +(const byte[]) plot_xhi#0 = ((byte*))(word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 = (word/signed word) 4096 +(const byte[]) plot_xlo#0 = ((byte*))(word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 = (word/signed word) 4864 +(const byte[]) plot_yhi#0 = ((byte*))(word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 = (word/signed word) 4608 +(const byte[]) plot_ylo#0 = ((byte*))(word/signed word) 4608 (void()) plots() (byte~) plots::$0 (byte~) plots::$1 @@ -5122,7 +5122,7 @@ 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/signed byte/word/signed word) 0 hi= (byte~) plot::$0 + (byte*) plot::plotter_x#1 ← ((byte*))(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 @@ -5157,7 +5157,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_ 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/signed byte/word/signed word) 0 ) + (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/((byte*))(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 @@ -5288,7 +5288,7 @@ 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/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] + [25] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] [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 ] @@ -5324,7 +5324,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_ [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/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/((byte*))(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 ] @@ -5469,7 +5469,7 @@ 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/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] + [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] [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 ] @@ -5503,7 +5503,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p [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/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] [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 ] @@ -5597,7 +5597,7 @@ 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/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 ] ) + [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main: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 ] ) @@ -5631,7 +5631,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p [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/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::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main: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 ] ) @@ -6076,7 +6076,7 @@ plot: { ldx x lda plot_xhi,x sta _0 - //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 + //SEG45 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=cowo1_sethi_zpby1 lda _0 sta plotter_x+1 lda #<0 @@ -6199,10 +6199,10 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs - lda #0 + lda #>0 sta yoffs+1 //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 @@ -6359,7 +6359,7 @@ Statement [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 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 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main: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 ] @@ -6388,7 +6388,7 @@ Statement [2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 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 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main: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] (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 @@ -6626,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/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 + //SEG45 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -6713,10 +6713,10 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs - lda #0 + lda #>0 sta yoffs+1 //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 @@ -6849,8 +6849,6 @@ init_screen: { Removing instruction lda #0 Removing instruction ldy #0 -Removing instruction lda #0 -Replacing instruction ldx #0 with TAX Replacing instruction lda #0 with TYA Succesful ASM optimization Pass5UnnecesaryLoadElimination ASSEMBLER @@ -6986,7 +6984,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/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 + //SEG45 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -7072,12 +7070,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + 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] b3_from_b4: @@ -7354,7 +7353,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/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 + //SEG45 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -7439,12 +7438,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + 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] //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 @@ -7706,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/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 + //SEG45 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -7787,12 +7787,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + 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] //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 @@ -8033,7 +8034,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/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 + //SEG45 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -8113,12 +8114,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + ldx #0 //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 @@ -8237,37 +8239,37 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (word) 53280 +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 +(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word) 8192 (byte) BMM (const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (byte*) COLS -(const byte*) COLS#0 COLS = (word) 55296 +(const byte*) COLS#0 COLS = ((byte*))(word) 55296 (byte) CSEL (const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (byte*) D011 -(const byte*) D011#0 D011 = (word) 53265 +(const byte*) D011#0 D011 = ((byte*))(word) 53265 (byte*) D016 -(const byte*) D016#0 D016 = (word) 53270 +(const byte*) D016#0 D016 = ((byte*))(word) 53270 (byte*) D018 -(const byte*) D018#0 D018 = (word) 53272 +(const byte*) D018#0 D018 = ((byte*))(word) 53272 (byte) DEN (const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (byte) ECM (const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (byte*) FGCOL -(const byte*) FGCOL#0 FGCOL = (word) 53281 +(const byte*) FGCOL#0 FGCOL = ((byte*))(word) 53281 (byte) MCM (const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (byte*) RASTER -(const byte*) RASTER#0 RASTER = (word) 53266 +(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266 (byte) RSEL (const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8 (byte) RST8 (const byte) RST8#0 RST8 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(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 @@ -8333,15 +8335,15 @@ FINAL SYMBOL TABLE (byte) plot::y (byte) plot::y#0 reg byte x 15.000000000000002 (byte[]) plot_bit -(const byte[]) plot_bit#0 plot_bit = (word/signed word) 5120 +(const byte[]) plot_bit#0 plot_bit = ((byte*))(word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 +(const byte[]) plot_xhi#0 plot_xhi = ((byte*))(word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 +(const byte[]) plot_xlo#0 plot_xlo = ((byte*))(word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 +(const byte[]) plot_yhi#0 plot_yhi = ((byte*))(word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 plot_ylo = (word/signed word) 4608 +(const byte[]) plot_ylo#0 plot_ylo = ((byte*))(word/signed word) 4608 (void()) plots() (byte~) plots::$0 reg byte y 101.0 (byte~) plots::$1 reg byte a 101.0 @@ -8498,7 +8500,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/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 + //SEG45 [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- zpptrby1=cowo1_sethi_aby sta plotter_x+1 lda #<0 sta plotter_x @@ -8578,12 +8580,13 @@ init_plot_tables: { 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/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=coby1 - lda #0 + //SEG78 [47] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- zpptrby1=cowo1 + lda #<0 sta yoffs + lda #>0 sta yoffs+1 //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 + ldx #0 //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 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 d7a93b6f3..245863eaf 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 @@ -2,37 +2,37 @@ (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (word) 53280 +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280 (byte*) BITMAP -(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 +(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word) 8192 (byte) BMM (const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (byte*) COLS -(const byte*) COLS#0 COLS = (word) 55296 +(const byte*) COLS#0 COLS = ((byte*))(word) 55296 (byte) CSEL (const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (byte*) D011 -(const byte*) D011#0 D011 = (word) 53265 +(const byte*) D011#0 D011 = ((byte*))(word) 53265 (byte*) D016 -(const byte*) D016#0 D016 = (word) 53270 +(const byte*) D016#0 D016 = ((byte*))(word) 53270 (byte*) D018 -(const byte*) D018#0 D018 = (word) 53272 +(const byte*) D018#0 D018 = ((byte*))(word) 53272 (byte) DEN (const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (byte) ECM (const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (byte*) FGCOL -(const byte*) FGCOL#0 FGCOL = (word) 53281 +(const byte*) FGCOL#0 FGCOL = ((byte*))(word) 53281 (byte) MCM (const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (byte*) RASTER -(const byte*) RASTER#0 RASTER = (word) 53266 +(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266 (byte) RSEL (const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8 (byte) RST8 (const byte) RST8#0 RST8 = (byte/word/signed word) 128 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(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 @@ -98,15 +98,15 @@ (byte) plot::y (byte) plot::y#0 reg byte x 15.000000000000002 (byte[]) plot_bit -(const byte[]) plot_bit#0 plot_bit = (word/signed word) 5120 +(const byte[]) plot_bit#0 plot_bit = ((byte*))(word/signed word) 5120 (byte[]) plot_xhi -(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 +(const byte[]) plot_xhi#0 plot_xhi = ((byte*))(word/signed word) 4352 (byte[]) plot_xlo -(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 +(const byte[]) plot_xlo#0 plot_xlo = ((byte*))(word/signed word) 4096 (byte[]) plot_yhi -(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 +(const byte[]) plot_yhi#0 plot_yhi = ((byte*))(word/signed word) 4864 (byte[]) plot_ylo -(const byte[]) plot_ylo#0 plot_ylo = (word/signed word) 4608 +(const byte[]) plot_ylo#0 plot_ylo = ((byte*))(word/signed word) 4608 (void()) plots() (byte~) plots::$0 reg byte y 101.0 (byte~) plots::$1 reg byte a 101.0 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 432a8d901..f6f3e593d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log @@ -107,7 +107,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN ← (word/signed word) 1024 + (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::x0 ← (byte/signed byte/word/signed word) 4 @@ -166,7 +166,7 @@ Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN ← (word/signed word) 1024 + (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::x0 ← (byte/signed byte/word/signed word) 4 @@ -224,7 +224,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from (byte) STAR ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN ← (word/signed word) 1024 + (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::x0 ← (byte/signed byte/word/signed word) 4 @@ -285,7 +285,7 @@ Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) STAR#2 ← phi( @1/(byte) STAR#4 ) @@ -371,7 +371,7 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) STAR#2 ← phi( @1/(byte) STAR#4 ) @@ -544,7 +544,7 @@ Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) STAR#2 ← phi( @1/(byte) STAR#4 ) @@ -630,7 +630,7 @@ Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) STAR#2 ← phi( @1/(byte) STAR#4 ) @@ -733,7 +733,7 @@ Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 @@ -798,7 +798,7 @@ Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 @@ -857,7 +857,7 @@ Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 @@ -916,7 +916,7 @@ Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 @@ -969,7 +969,7 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte[1000]) SCREEN#0 ← (word/signed word) 1024 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4 @@ -1015,7 +1015,7 @@ main::@return: scope:[main] from main::@2 @end: scope:[] from @1 Constant (const byte) STAR#0 = 81 -Constant (const byte[1000]) SCREEN#0 = 1024 +Constant (const byte[1000]) SCREEN#0 = ((byte*))1024 Constant (const byte) main::x#0 = 4 Constant (const byte) main::y#0 = 4 Constant (const byte) main::x1#0 = 39 @@ -1247,7 +1247,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 = (word/signed word) 1024 +(const byte[1000]) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte) STAR (const byte) STAR#0 = (byte/signed byte/word/signed word) 81 (void()) main() @@ -2227,7 +2227,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte[1000]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte) STAR (const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (void()) main() 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 57cf77a0c..e6291b829 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte[1000]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte) STAR (const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (void()) main() diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.asm b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.asm index a10d8ff30..9300b0838 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.asm @@ -15,9 +15,9 @@ main: { sta y ldy #yd/2 tax - lda #0+0*$28 + lda #<0+0*$28 sta idx - txa + lda #>0+0*$28 sta idx+1 b1: lda #=(byte) main::e#1) goto main::@2 + to:main::@3 +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::$13) goto main::@1 + to:main::@return +main::@3: scope:[main] from main::@1 + (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 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Constant (const word) main::idx#0 = ((word))main::$4 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -1145,10 +1189,11 @@ 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::idx#0 = ((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 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::$4 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 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 @@ -1161,7 +1206,7 @@ main::@1: scope:[main] from main main::@2 (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 ) + (word) main::idx#3 ← phi( main/((word))(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/signed byte/word/signed word) 1 (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 @@ -1209,7 +1254,7 @@ FINAL SYMBOL TABLE (word) main::idx#3 (word) main::idx#5 (byte[1000]) main::screen -(const byte[1000]) main::screen#0 = (word/signed word) 1024 +(const byte[1000]) main::screen#0 = ((byte*))(word/signed word) 1024 (byte) main::x (byte) main::x#1 (byte) main::x#2 @@ -1245,7 +1290,7 @@ main::@1: scope:[main] from main main::@5 (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 ) + (word) main::idx#3 ← phi( main/((word))(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/signed byte/word/signed word) 1 (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 @@ -1307,7 +1352,7 @@ main::@1: scope:[main] from main main::@5 [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 ] + [2] (word) main::idx#3 ← phi( main/((word))(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/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 ] @@ -1380,7 +1425,7 @@ main::@1: scope:[main] from main main::@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 ] + [2] (word) main::idx#3 ← phi( main/((word))(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/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 ] @@ -1416,7 +1461,7 @@ main::@1: scope:[main] from main main::@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 ] ) + [2] (word) main::idx#3 ← phi( main/((word))(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/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 ] ) @@ -1543,10 +1588,10 @@ main: { //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/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 + //SEG12 [2] phi (word) main::idx#3 = ((word))(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=cowo1 + lda #<0+0*$28 sta idx - lda #0 + lda #>0+0*$28 sta idx+1 jmp b1 //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -1691,10 +1736,10 @@ main: { ldy #yd/2 //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/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 + //SEG12 [2] phi (word) main::idx#3 = ((word))(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=cowo1 + lda #<0+0*$28 sta idx - lda #0 + lda #>0+0*$28 sta idx+1 jmp b1 //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -1766,7 +1811,6 @@ main: { } Replacing instruction ldx #0 with TAX -Replacing instruction lda #0 with TXA Replacing label b2_from_b1 with b2 Replacing label b1_from_b2 with b1 Removing instruction bbegin: @@ -1808,10 +1852,10 @@ main: { ldy #yd/2 //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/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 + //SEG12 [2] phi (word) main::idx#3 = ((word))(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=cowo1 + lda #<0+0*$28 sta idx - txa + lda #>0+0*$28 sta idx+1 jmp b1 //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -1915,10 +1959,10 @@ main: { ldy #yd/2 //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/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 + //SEG12 [2] phi (word) main::idx#3 = ((word))(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=cowo1 + lda #<0+0*$28 sta idx - txa + lda #>0+0*$28 sta idx+1 jmp b1 //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] @@ -2016,10 +2060,10 @@ main: { ldy #yd/2 //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/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 + //SEG12 [2] phi (word) main::idx#3 = ((word))(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=cowo1 + lda #<0+0*$28 sta idx - txa + lda #>0+0*$28 sta idx+1 //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG14 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy @@ -2106,7 +2150,7 @@ 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/signed word) 1024 +(const byte[1000]) main::screen#0 screen = ((byte*))(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 @@ -2160,10 +2204,10 @@ main: { ldy #yd/2 //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/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 + //SEG12 [2] phi (word) main::idx#3 = ((word))(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=cowo1 + lda #<0+0*$28 sta idx - txa + lda #>0+0*$28 sta idx+1 //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG14 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy 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 f243ffd8f..b5c971b58 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym @@ -19,7 +19,7 @@ (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/signed word) 1024 +(const byte[1000]) main::screen#0 screen = ((byte*))(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 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 04c657780..80857693a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.cfg @@ -16,7 +16,7 @@ main::@return: scope:[main] from main::@1 to:@return line: scope:[line] from main main::@1 [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*) screen#14 ← phi( main/((byte*))(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 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 408b95401..500659079 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/callconstparam.log @@ -55,7 +55,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen ← (word/signed word) 1024 + (byte*) screen ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (void~) main::$0 ← call line (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 @@ -90,7 +90,7 @@ Removing empty block @1 Removing empty block line::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen ← (word/signed word) 1024 + (byte*) screen ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from (void~) main::$0 ← call line (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 @@ -123,7 +123,7 @@ line modifies screen CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) screen ← (word/signed word) 1024 + (byte*) screen ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) line::x0 ← (byte/signed byte/word/signed word) 1 @@ -169,7 +169,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) screen#0 ← (word/signed word) 1024 + (byte*) screen#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) screen#13 ← phi( @2/(byte*) screen#15 ) @@ -226,7 +226,7 @@ line::@return: scope:[line] from line::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) screen#0 ← (word/signed word) 1024 + (byte*) screen#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) screen#13 ← phi( @2/(byte*) screen#15 ) @@ -331,7 +331,7 @@ Alias (byte) line::x#0 = (byte) line::x0#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen#0 ← (word/signed word) 1024 + (byte*) screen#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 @@ -377,7 +377,7 @@ Self Phi Eliminated (byte) line::x1#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen#0 ← (word/signed word) 1024 + (byte*) screen#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 @@ -423,7 +423,7 @@ Redundant Phi (byte) line::x1#2 (byte) line::x1#3 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) screen#0 ← (word/signed word) 1024 + (byte*) screen#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 @@ -468,7 +468,7 @@ 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/signed word) 1024 + (byte*) screen#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 @@ -508,7 +508,7 @@ line::@return: scope:[line] from line::@1 to:@end @end: scope:[] from @3 -Constant (const byte*) screen#0 = 1024 +Constant (const byte*) screen#0 = ((byte*))1024 Constant (const byte) line::x0#0 = 1 Constant (const byte) line::x1#0 = 2 Constant (const byte) line::x0#1 = 3 @@ -598,7 +598,7 @@ Inlining constant with var siblings (const byte*) screen#0 Inlining constant with var siblings (const byte*) screen#0 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 screen#0 = ((byte*))(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 @@ -616,7 +616,7 @@ main::@return: scope:[main] from main::@1 to:@return line: scope:[line] from main main::@1 (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*) screen#14 ← phi( main/((byte*))(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 @@ -679,7 +679,7 @@ main::@return: scope:[main] from main::@1 to:@return line: scope:[line] from main main::@1 (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*) screen#14 ← phi( main/((byte*))(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 @@ -733,7 +733,7 @@ main::@return: scope:[main] from main::@1 to:@return line: scope:[line] from main main::@1 [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*) screen#14 ← phi( main/((byte*))(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 ] @@ -789,7 +789,7 @@ main::@return: scope:[main] from main::@1 to:@return line: scope:[line] from main main::@1 [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*) screen#14 ← phi( main/((byte*))(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 @@ -823,7 +823,7 @@ main::@return: scope:[main] from main::@1 to:@return line: scope:[line] from main main::@1 [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*) screen#14 ← phi( main/((byte*))(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 @@ -915,7 +915,7 @@ main: { //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/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -1030,7 +1030,7 @@ main: { //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/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -1115,7 +1115,7 @@ main: { //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/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -1194,7 +1194,7 @@ main: { //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/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -1289,7 +1289,7 @@ main: { //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/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 + //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/casting.cfg b/src/main/java/dk/camelot64/kickc/test/ref/casting.cfg index 00fdde594..2ca79d648 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/casting.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/casting.cfg @@ -11,9 +11,9 @@ main::@1: scope:[main] from main main::@1 [2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) [ main::b#2 ] ( main:0 [ main::b#2 ] ) [3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:0 [ main::b#2 main::b2#0 ] ) [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) - [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) + [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) - [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) + [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) [10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::b#1 ] ( main:0 [ main::b#1 ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/casting.log b/src/main/java/dk/camelot64/kickc/test/ref/casting.log index 073bf7596..52641ce8a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/casting.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/casting.log @@ -44,10 +44,10 @@ main::@1: (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b (byte) main::b2 ← (byte~) main::$0 *((byte*) SCREEN + (byte) main::b) ← (byte) main::b2 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b (signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte) main::sb ← (signed byte~) main::$2 - (byte~) main::$3 ← _byte_ (signed byte) main::sb + (byte~) main::$3 ← ((byte)) (signed byte) main::sb *((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3 (byte) main::b ← ++ (byte) main::b (boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101 @@ -62,7 +62,7 @@ w::@1: (word) w::w1 ← (word/signed word) 1300 (word) w::w2 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1 - (word) w::w2 - (byte~) w::$1 ← _byte_ (word~) w::$0 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i @@ -116,7 +116,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2 ← (byte*~) $1 @@ -134,10 +134,10 @@ main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b (byte) main::b2 ← (byte~) main::$0 *((byte*) SCREEN + (byte) main::b) ← (byte) main::b2 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b (signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte) main::sb ← (signed byte~) main::$2 - (byte~) main::$3 ← _byte_ (signed byte) main::sb + (byte~) main::$3 ← ((byte)) (signed byte) main::sb *((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3 (byte) main::b ← ++ (byte) main::b (boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101 @@ -158,7 +158,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1 ← (word/signed word) 1300 (word) w::w2 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1 - (word) w::w2 - (byte~) w::$1 ← _byte_ (word~) w::$0 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i @@ -183,7 +183,7 @@ Removing empty block @1 Removing empty block w::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2 ← (byte*~) $1 @@ -201,10 +201,10 @@ main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b (byte) main::b2 ← (byte~) main::$0 *((byte*) SCREEN + (byte) main::b) ← (byte) main::b2 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b (signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte) main::sb ← (signed byte~) main::$2 - (byte~) main::$3 ← _byte_ (signed byte) main::sb + (byte~) main::$3 ← ((byte)) (signed byte) main::sb *((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3 (byte) main::b ← ++ (byte) main::b (boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101 @@ -223,7 +223,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1 ← (word/signed word) 1300 (word) w::w2 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1 - (word) w::w2 - (byte~) w::$1 ← _byte_ (word~) w::$0 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i @@ -246,7 +246,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2 ← (byte*~) $1 @@ -264,10 +264,10 @@ main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b (byte) main::b2 ← (byte~) main::$0 *((byte*) SCREEN + (byte) main::b) ← (byte) main::b2 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b (signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte) main::sb ← (signed byte~) main::$2 - (byte~) main::$3 ← _byte_ (signed byte) main::sb + (byte~) main::$3 ← ((byte)) (signed byte) main::sb *((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3 (byte) main::b ← ++ (byte) main::b (boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101 @@ -288,7 +288,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1 ← (word/signed word) 1300 (word) w::w2 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1 - (word) w::w2 - (byte~) w::$1 ← _byte_ (word~) w::$0 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i @@ -317,7 +317,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2#0 ← (byte*~) $1 @@ -344,10 +344,10 @@ main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte~) main::$0 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← (signed byte~) main::$2 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 @@ -375,7 +375,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1#0 ← (word/signed word) 1300 (word) w::w2#0 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 - (byte~) w::$1 ← _byte_ (word~) w::$0 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b#0 ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 @@ -402,7 +402,7 @@ w::@return: scope:[w] from w::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2#0 ← (byte*~) $1 @@ -429,10 +429,10 @@ main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte~) main::$0 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← (signed byte~) main::$2 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 @@ -460,7 +460,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1#0 ← (word/signed word) 1300 (word) w::w2#0 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 - (byte~) w::$1 ← _byte_ (word~) w::$0 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b#0 ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 @@ -566,7 +566,7 @@ Culled Empty Block (label) @3 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2#0 ← (byte*~) $1 @@ -593,10 +593,10 @@ main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte~) main::$0 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← (signed byte~) main::$2 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 @@ -622,7 +622,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1#0 ← (word/signed word) 1300 (word) w::w2#0 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 - (byte~) w::$1 ← _byte_ (word~) w::$0 + (byte~) w::$1 ← ((byte)) (word~) w::$0 (byte) w::b#0 ← (byte~) w::$1 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 @@ -658,7 +658,7 @@ Alias (byte) w::b2#0 = (byte~) w::$3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 @@ -677,9 +677,9 @@ main::@1: scope:[main] from main main::@1 (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte) main::sb#0 ← - (signed byte~) main::$1 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 @@ -701,7 +701,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1#0 ← (word/signed word) 1300 (word) w::w2#0 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 - (byte) w::b#0 ← _byte_ (word~) w::$0 + (byte) w::b#0 ← ((byte)) (word~) w::$0 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 *((byte*) SCREEN3#1 + (byte) w::i#2) ← (byte) w::b#0 @@ -727,7 +727,7 @@ Self Phi Eliminated (byte*) SCREEN4#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 @@ -746,9 +746,9 @@ main::@1: scope:[main] from main main::@1 (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte) main::sb#0 ← - (signed byte~) main::$1 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 @@ -770,7 +770,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1#0 ← (word/signed word) 1300 (word) w::w2#0 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 - (byte) w::b#0 ← _byte_ (word~) w::$0 + (byte) w::b#0 ← ((byte)) (word~) w::$0 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 *((byte*) SCREEN3#1 + (byte) w::i#2) ← (byte) w::b#0 @@ -796,7 +796,7 @@ Redundant Phi (byte*) SCREEN4#1 (byte*) SCREEN4#2 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 @@ -811,9 +811,9 @@ main::@1: scope:[main] from main main::@1 (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 *((byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte) main::sb#0 ← - (signed byte~) main::$1 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 @@ -833,7 +833,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1#0 ← (word/signed word) 1300 (word) w::w2#0 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 - (byte) w::b#0 ← _byte_ (word~) w::$0 + (byte) w::b#0 ← ((byte)) (word~) w::$0 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 *((byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0 @@ -855,7 +855,7 @@ Simple Condition (boolean~) w::$4 if((byte) w::i#1!=(byte/signed byte/word/signe Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 @@ -870,9 +870,9 @@ main::@1: scope:[main] from main main::@1 (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 *((byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte) main::sb#0 ← - (signed byte~) main::$1 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 @@ -891,7 +891,7 @@ w::@1: scope:[w] from w w::@1 (word) w::w1#0 ← (word/signed word) 1300 (word) w::w2#0 ← (word/signed word) 1250 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 - (byte) w::b#0 ← _byte_ (word~) w::$0 + (byte) w::b#0 ← ((byte)) (word~) w::$0 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 *((byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0 @@ -907,7 +907,7 @@ w::@return: scope:[w] from w::@1 to:@end @end: scope:[] from @2 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte/signed byte/word/signed word) $0 = 40*3 Constant (const byte/word/signed word) $2 = 40*6 Constant (const word/signed word) $4 = 40*9 @@ -929,9 +929,9 @@ main::@1: scope:[main] from main main::@1 (byte) main::b#2 ← phi( main/(const byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte) main::sb#0 ← - (signed byte~) main::$1 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 @@ -947,7 +947,7 @@ w: scope:[w] from main::@2 w::@1: scope:[w] from w w::@1 (byte) w::i#2 ← phi( w/(const byte) w::i#0 w::@1/(byte) w::i#1 ) (word~) w::$0 ← (const word) w::w1#0 - (const word) w::w2#0 - (byte) w::b#0 ← _byte_ (word~) w::$0 + (byte) w::b#0 ← ((byte)) (word~) w::$0 (byte) w::b2#0 ← (const byte/signed byte/word/signed word) w::$2 + (byte) w::i#2 *((byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0 *((byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 @@ -976,9 +976,9 @@ main::@1: scope:[main] from main main::@1 (byte) main::b#2 ← phi( main/(const byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte) main::sb#0 ← - (signed byte~) main::$1 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 @@ -993,7 +993,7 @@ w: scope:[w] from main::@2 to:w::@1 w::@1: scope:[w] from w w::@1 (byte) w::i#2 ← phi( w/(const byte) w::i#0 w::@1/(byte) w::i#1 ) - (byte) w::b#0 ← _byte_ (const word) w::$0 + (byte) w::b#0 ← ((byte)) (const word) w::$0 (byte) w::b2#0 ← (const byte/signed byte/word/signed word) w::$2 + (byte) w::i#2 *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0 *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 @@ -1008,7 +1008,7 @@ w::@return: scope:[w] from w::@1 to:@end @end: scope:[] from @2 -Constant (const byte) w::b#0 = _byte_w::$0 +Constant (const byte) w::b#0 = ((byte))w::$0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -1019,9 +1019,9 @@ main::@1: scope:[main] from main main::@1 (byte) main::b#2 ← phi( main/(const byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte) main::sb#0 ← - (signed byte~) main::$1 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 @@ -1081,9 +1081,9 @@ main::@1: scope:[main] from main main::@1 (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte) main::sb#0 ← - (signed byte~) main::$1 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 @@ -1117,7 +1117,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte*) SCREEN2 (const byte*) SCREEN2#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 (byte*) SCREEN3 @@ -1141,7 +1141,7 @@ FINAL SYMBOL TABLE (label) w::@1 (label) w::@return (byte) w::b -(const byte) w::b#0 = _byte_(const word) w::w1#0-(const word) w::w2#0 +(const byte) w::b#0 = ((byte))(const word) w::w1#0-(const word) w::w2#0 (byte) w::b2 (byte) w::b2#0 (byte) w::i @@ -1169,9 +1169,9 @@ main::@1: scope:[main] from main main::@4 (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte~) main::b#3 ) (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 - (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 + (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 (signed byte) main::sb#0 ← - (signed byte~) main::$1 - (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 + (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 (byte) main::b#1 ← ++ (byte) main::b#2 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@4 @@ -1226,9 +1226,9 @@ main::@1: scope:[main] from main main::@4 [2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte~) main::b#3 ) [ main::b#2 ] [3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] - [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] + [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] - [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] + [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] [10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::b#1 ] @@ -1287,9 +1287,9 @@ main::@1: scope:[main] from main main::@1 [2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) [ main::b#2 ] [3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] - [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] + [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] - [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] + [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] [10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::b#1 ] @@ -1329,9 +1329,9 @@ main::@1: scope:[main] from main main::@1 [2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) [ main::b#2 ] ( main:0 [ main::b#2 ] ) [3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:0 [ main::b#2 main::b2#0 ] ) [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) - [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) + [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) - [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) + [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) [10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::b#1 ] ( main:0 [ main::b#1 ] ) @@ -1486,7 +1486,7 @@ main: { lda b2 ldx b sta SCREEN,x - //SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- zpsby1=_sbyte_zpby1 + //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- zpsby1=_sbyte_zpby1 lda b sta _1 //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- zpsby1=_neg_zpsby2 @@ -1495,7 +1495,7 @@ main: { clc adc #1 sta sb - //SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- zpby1=_byte_zpsby1 + //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- zpby1=_byte_zpsby1 lda sb sta _3 //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_zpby1=zpby2 @@ -1643,13 +1643,13 @@ main: { sbc $ff //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN,x - //SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby + //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby txa //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby eor #$ff clc adc #1 - //SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby + //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN2,x //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby @@ -1749,13 +1749,13 @@ main: { sbc $ff //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN,x - //SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby + //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby txa //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby eor #$ff clc adc #1 - //SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby + //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN2,x //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby @@ -1850,13 +1850,13 @@ main: { sbc $ff //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN,x - //SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby + //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby txa //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby eor #$ff clc adc #1 - //SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby + //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN2,x //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby @@ -1941,13 +1941,13 @@ main: { sbc $ff //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN,x - //SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby + //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby txa //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby eor #$ff clc adc #1 - //SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby + //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN2,x //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby @@ -2001,7 +2001,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCREEN2 (const byte*) SCREEN2#0 SCREEN2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 (byte*) SCREEN3 @@ -2025,7 +2025,7 @@ FINAL SYMBOL TABLE (label) w::@1 (label) w::@return (byte) w::b -(const byte) w::b#0 b = _byte_(const word) w::w1#0-(const word) w::w2#0 +(const byte) w::b#0 b = ((byte))(const word) w::w1#0-(const word) w::w2#0 (byte) w::b2 (byte) w::b2#0 reg byte x 11.0 (byte) w::i @@ -2076,13 +2076,13 @@ main: { sbc $ff //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN,x - //SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby + //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby txa //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby eor #$ff clc adc #1 - //SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby + //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby sta SCREEN2,x //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/casting.sym b/src/main/java/dk/camelot64/kickc/test/ref/casting.sym index a72dddb77..4844ec4c2 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/casting.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/casting.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCREEN2 (const byte*) SCREEN2#0 SCREEN2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 (byte*) SCREEN3 @@ -26,7 +26,7 @@ (label) w::@1 (label) w::@return (byte) w::b -(const byte) w::b#0 b = _byte_(const word) w::w1#0-(const word) w::w2#0 +(const byte) w::b#0 b = ((byte))(const word) w::w1#0-(const word) w::w2#0 (byte) w::b2 (byte) w::b2#0 reg byte x 11.0 (byte) w::i 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 c4f979f28..6df7872b6 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/chargen.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/chargen.log @@ -94,9 +94,9 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN ← ((byte*)) (word) 53248 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from asm { sei } @@ -153,9 +153,9 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN ← ((byte*)) (word) 53248 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } @@ -217,9 +217,9 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) @@ -310,9 +310,9 @@ main::@return: scope:[main] from main::@6 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) @@ -486,9 +486,9 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) @@ -579,9 +579,9 @@ Inversing boolean not (boolean~) main::$4 ← (byte~) main::$2 == (byte/signed b Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) @@ -688,9 +688,9 @@ Alias (byte*) main::sc#2 = (byte*~) main::$7 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } @@ -765,9 +765,9 @@ Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#6 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } @@ -833,9 +833,9 @@ Self Phi Eliminated (byte*) PROCPORT#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } @@ -900,9 +900,9 @@ Redundant Phi (byte*) PROCPORT#2 (byte*) PROCPORT#8 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } @@ -964,9 +964,9 @@ Simple Condition (boolean~) main::$8 if((byte) main::y#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 asm { sei } @@ -1019,9 +1019,9 @@ main::@return: scope:[main] from main::@6 to:@end @end: scope:[] from @1 -Constant (const byte*) PROCPORT#0 = 1 -Constant (const byte*) CHARGEN#0 = 53248 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::y#0 = 0 Constant (const byte) main::x#0 = 0 Constant (const byte) main::c#0 = '.' @@ -1304,11 +1304,11 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) CHARGEN -(const byte*) CHARGEN#0 = (word) 53248 +(const byte*) CHARGEN#0 = ((byte*))(word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 = (byte/signed byte/word/signed word) 1 +(const byte*) PROCPORT#0 = ((byte*))(byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) main() (byte~) main::$2 (label) main::@1 @@ -2352,11 +2352,11 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) CHARGEN -(const byte*) CHARGEN#0 CHARGEN = (word) 53248 +(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 +(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (byte~) main::$2 reg byte a 202.0 (label) main::@1 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 99cd38be8..630f86f47 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym @@ -2,11 +2,11 @@ (label) @begin (label) @end (byte*) CHARGEN -(const byte*) CHARGEN#0 CHARGEN = (word) 53248 +(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 +(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (byte~) main::$2 reg byte a 202.0 (label) main::@1 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 30559a135..e6fdbd150 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 @@ -105,8 +105,8 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots ← (word/signed word) 4096 - (byte*) SCREEN ← (word/signed word) 1024 + (byte[]) plots ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -183,8 +183,8 @@ Removing empty block line::@6 Removing empty block @2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots ← (word/signed word) 4096 - (byte*) SCREEN ← (word/signed word) 1024 + (byte[]) plots ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -242,8 +242,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte[]) plots ← (word/signed word) 4096 - (byte*) SCREEN ← (word/signed word) 1024 + (byte[]) plots ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -316,8 +316,8 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[]) plots#0 ← (word/signed word) 4096 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) @@ -418,8 +418,8 @@ plot::@return: scope:[plot] from plot CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte[]) plots#0 ← (word/signed word) 4096 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) @@ -602,8 +602,8 @@ Culled Empty Block (label) @4 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word/signed word) 4096 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) @@ -702,8 +702,8 @@ 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/signed word) 4096 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) @@ -813,8 +813,8 @@ Alias (byte) plot::idx#0 = (byte~) plot::$0 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word/signed word) 4096 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -897,8 +897,8 @@ Self Phi Eliminated (byte*) SCREEN#5 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word/signed word) 4096 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -979,8 +979,8 @@ Redundant Phi (byte*) SCREEN#5 (byte*) SCREEN#10 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word/signed word) 4096 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -1049,8 +1049,8 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word/signed word) 4096 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -1118,8 +1118,8 @@ Simple Condition (boolean~) line::$3 if((byte) line::x#1<=(byte) line::x1#0) got Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte[]) plots#0 ← (word/signed word) 4096 - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -1178,8 +1178,8 @@ plot::@return: scope:[plot] from plot to:@end @end: scope:[] from @3 -Constant (const byte[]) plots#0 = 4096 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte[]) plots#0 = ((byte*))4096 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 0 Constant (const byte) line::x#0 = 0 Constant (const byte) line::x1#0 = 10 @@ -1432,7 +1432,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) line((byte) line::x0 , (byte) line::x1) (label) line::@1 (label) line::@2 @@ -1462,7 +1462,7 @@ FINAL SYMBOL TABLE (byte) plot::x#1 (byte) plot::x#2 (byte[]) plots -(const byte[]) plots#0 = (word/signed word) 4096 +(const byte[]) plots#0 = ((byte*))(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) @@ -2571,7 +2571,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) line((byte) line::x0 , (byte) line::x1) (label) line::@1 (label) line::@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/signed word) 4096 +(const byte[]) plots#0 plots = ((byte*))(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/const-identification.sym b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.sym index 128d25253..f23691627 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) line((byte) line::x0 , (byte) line::x1) (label) line::@1 (label) line::@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/signed word) 4096 +(const byte[]) plots#0 plots = ((byte*))(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.log b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log index 91f67cd07..b38cd5458 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log @@ -54,9 +54,9 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte) STAR ← (byte/signed byte/word/signed word) 81 - (byte*) VIC ← (word) 53248 + (byte*) VIC ← ((byte*)) (word) 53248 (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 @@ -88,9 +88,9 @@ main::@return: scope:[main] from main::@2 Removing empty block main::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte) STAR ← (byte/signed byte/word/signed word) 81 - (byte*) VIC ← (word) 53248 + (byte*) VIC ← ((byte*)) (word) 53248 (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 @@ -121,9 +121,9 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte) STAR ← (byte/signed byte/word/signed word) 81 - (byte*) VIC ← (word) 53248 + (byte*) VIC ← ((byte*)) (word) 53248 (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 @@ -156,9 +156,9 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte*) VIC#0 ← (word) 53248 + (byte*) VIC#0 ← ((byte*)) (word) 53248 (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 @@ -200,9 +200,9 @@ main::@return: scope:[main] from main::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte*) VIC#0 ← (word) 53248 + (byte*) VIC#0 ← ((byte*)) (word) 53248 (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 @@ -284,9 +284,9 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte*) VIC#0 ← (word) 53248 + (byte*) VIC#0 ← ((byte*)) (word) 53248 (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 @@ -331,9 +331,9 @@ 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/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte*) VIC#0 ← (word) 53248 + (byte*) VIC#0 ← ((byte*)) (word) 53248 (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 @@ -367,9 +367,9 @@ Self Phi Eliminated (byte*) SCREEN#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte*) VIC#0 ← (word) 53248 + (byte*) VIC#0 ← ((byte*)) (word) 53248 (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 @@ -403,9 +403,9 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte*) VIC#0 ← (word) 53248 + (byte*) VIC#0 ← ((byte*)) (word) 53248 (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 @@ -436,9 +436,9 @@ Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81 - (byte*) VIC#0 ← (word) 53248 + (byte*) VIC#0 ← ((byte*)) (word) 53248 (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 @@ -464,9 +464,9 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) STAR#0 = 81 -Constant (const byte*) VIC#0 = 53248 +Constant (const byte*) VIC#0 = ((byte*))53248 Constant (const byte/signed byte/word/signed word) $0 = 16*2 Constant (const byte) RED#0 = 2 Constant (const byte) main::i#0 = 40 @@ -580,11 +580,11 @@ FINAL SYMBOL TABLE (byte) RED (const byte) RED#0 = (byte/signed byte/word/signed word) 2 (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte) STAR (const byte) STAR#0 = (byte/signed byte/word/signed word) 81 (byte*) VIC -(const byte*) VIC#0 = (word) 53248 +(const byte*) VIC#0 = ((byte*))(word) 53248 (void()) main() (label) main::@1 (label) main::@return @@ -1022,11 +1022,11 @@ FINAL SYMBOL TABLE (byte) RED (const byte) RED#0 RED = (byte/signed byte/word/signed word) 2 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte) STAR (const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (byte*) VIC -(const byte*) VIC#0 VIC = (word) 53248 +(const byte*) VIC#0 VIC = ((byte*))(word) 53248 (void()) main() (label) main::@1 (label) 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 5e597b561..7e4ab5169 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.sym @@ -6,11 +6,11 @@ (byte) RED (const byte) RED#0 RED = (byte/signed byte/word/signed word) 2 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte) STAR (const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (byte*) VIC -(const byte*) VIC#0 VIC = (word) 53248 +(const byte*) VIC#0 VIC = ((byte*))(word) 53248 (void()) main() (label) main::@1 (label) main::@return 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 44f27f504..96a7c364b 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log @@ -45,7 +45,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs ← (word/signed word) 4352 + (byte[15]) fibs ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 @@ -76,7 +76,7 @@ main::@return: scope:[main] from main::@2 Removing empty block main::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs ← (word/signed word) 4352 + (byte[15]) fibs ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 @@ -106,7 +106,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte[15]) fibs ← (word/signed word) 4352 + (byte[15]) fibs ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from @1 *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 @@ -138,7 +138,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte[15]) fibs#0 ← (word/signed word) 4352 + (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from @1 (byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 ) @@ -172,7 +172,7 @@ main::@return: scope:[main] from main::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte[15]) fibs#0 ← (word/signed word) 4352 + (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from @1 (byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 ) @@ -232,7 +232,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs#0 ← (word/signed word) 4352 + (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from @1 (byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 ) @@ -266,7 +266,7 @@ 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/signed word) 4352 + (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from @1 *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 @@ -298,7 +298,7 @@ Self Phi Eliminated (byte[15]) fibs#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs#0 ← (word/signed word) 4352 + (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from @1 *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 @@ -330,7 +330,7 @@ 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/signed word) 4352 + (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from @1 *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 @@ -361,7 +361,7 @@ Simple Condition (boolean~) main::$5 if((byte) main::i#1<(byte/signed byte/word/ Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte[15]) fibs#0 ← (word/signed word) 4352 + (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352 to:@1 main: scope:[main] from @1 *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 @@ -387,7 +387,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Constant (const byte[15]) fibs#0 = 4352 +Constant (const byte[15]) fibs#0 = ((byte*))4352 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -516,7 +516,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[15]) fibs -(const byte[15]) fibs#0 = (word/signed word) 4352 +(const byte[15]) fibs#0 = ((byte*))(word/signed word) 4352 (void()) main() (byte~) main::$1 (byte~) main::$3 @@ -994,7 +994,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[15]) fibs -(const byte[15]) fibs#0 fibs = (word/signed word) 4352 +(const byte[15]) fibs#0 fibs = ((byte*))(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/fibmem.sym b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.sym index 916a98620..f5c7c6d80 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/signed word) 4352 +(const byte[15]) fibs#0 fibs = ((byte*))(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.log b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log index 2a11d1855..117e1d02f 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 @@ -200,10 +200,10 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (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 + (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER ← ((byte*)) (word) 53266 to:@1 main: scope:[main] from (void~) main::$0 ← call prepare @@ -343,10 +343,10 @@ Removing empty block @3 Removing empty block plot::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (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 + (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER ← ((byte*)) (word) 53266 to:@4 main: scope:[main] from (void~) main::$0 ← call prepare @@ -464,10 +464,10 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (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 + (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER ← ((byte*)) (word) 53266 to:@4 main: scope:[main] from @4 call prepare param-assignment @@ -602,10 +602,10 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (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 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 to:@4 main: scope:[main] from @4 (byte[256]) buffer2#15 ← phi( @4/(byte[256]) buffer2#17 ) @@ -818,10 +818,10 @@ plot::@return: scope:[plot] from plot::@3 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (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 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 to:@4 main: scope:[main] from @4 (byte[256]) buffer2#15 ← phi( @4/(byte[256]) buffer2#17 ) @@ -1216,10 +1216,10 @@ Culled Empty Block (label) @5 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (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 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 to:@4 main: scope:[main] from @4 (byte[256]) buffer2#15 ← phi( @4/(byte[256]) buffer2#17 ) @@ -1454,10 +1454,10 @@ Alias (byte*) plot::line#1 = (byte*~) plot::$5 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (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 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 to:@4 main: scope:[main] from @4 call prepare param-assignment @@ -1637,10 +1637,10 @@ Self Phi Eliminated (byte) plot::y#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (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 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 to:@4 main: scope:[main] from @4 call prepare param-assignment @@ -1813,10 +1813,10 @@ 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/signed word) 1024 - (byte[256]) buffer1#0 ← (word/signed word) 4096 - (byte[256]) buffer2#0 ← (word/signed word) 4352 - (byte*) RASTER#0 ← (word) 53266 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 to:@4 main: scope:[main] from @4 call prepare param-assignment @@ -1970,10 +1970,10 @@ Simple Condition (boolean~) plot::$6 if((byte) plot::y#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (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 + (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096 + (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 to:@4 main: scope:[main] from @4 call prepare param-assignment @@ -2106,10 +2106,10 @@ plot::@return: scope:[plot] from plot::@3 to:@end @end: scope:[] from @4 -Constant (const byte[1000]) SCREEN#0 = 1024 -Constant (const byte[256]) buffer1#0 = 4096 -Constant (const byte[256]) buffer2#0 = 4352 -Constant (const byte*) RASTER#0 = 53266 +Constant (const byte[1000]) SCREEN#0 = ((byte*))1024 +Constant (const byte[256]) buffer1#0 = ((byte*))4096 +Constant (const byte[256]) buffer2#0 = ((byte*))4352 +Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte) main::c#0 = 25 Constant (const byte) prepare::i#0 = 0 Constant (const byte) flip::srcIdx#0 = 0 @@ -3449,13 +3449,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) RASTER -(const byte*) RASTER#0 = (word) 53266 +(const byte*) RASTER#0 = ((byte*))(word) 53266 (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 = (word/signed word) 1024 +(const byte[1000]) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte[256]) buffer1 -(const byte[256]) buffer1#0 = (word/signed word) 4096 +(const byte[256]) buffer1#0 = ((byte*))(word/signed word) 4096 (byte[256]) buffer2 -(const byte[256]) buffer2#0 = (word/signed word) 4352 +(const byte[256]) buffer2#0 = ((byte*))(word/signed word) 4352 (void()) flip() (byte~) flip::$0 (byte~) flip::$4 @@ -6064,13 +6064,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) RASTER -(const byte*) RASTER#0 RASTER = (word) 53266 +(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266 (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte[1000]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte[256]) buffer1 -(const byte[256]) buffer1#0 buffer1 = (word/signed word) 4096 +(const byte[256]) buffer1#0 buffer1 = ((byte*))(word/signed word) 4096 (byte[256]) buffer2 -(const byte[256]) buffer2#0 buffer2 = (word/signed word) 4352 +(const byte[256]) buffer2#0 buffer2 = ((byte*))(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/flipper-rex2.sym b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym index 9b2e0ae96..17a9058c1 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 @@ -2,13 +2,13 @@ (label) @begin (label) @end (byte*) RASTER -(const byte*) RASTER#0 RASTER = (word) 53266 +(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266 (byte[1000]) SCREEN -(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte[1000]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte[256]) buffer1 -(const byte[256]) buffer1#0 buffer1 = (word/signed word) 4096 +(const byte[256]) buffer1#0 buffer1 = ((byte*))(word/signed word) 4096 (byte[256]) buffer2 -(const byte[256]) buffer2#0 buffer2 = (word/signed word) 4352 +(const byte[256]) buffer2#0 buffer2 = ((byte*))(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.log b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log index 3f7390ebd..0d394b135 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log @@ -1,7 +1,7 @@ // Minimal classic for() loop -byte* SCREEN = $0400; +byte* SCREEN = (byte*)$0400; void main() { for(byte i=0; i!=100; i++) { @@ -12,7 +12,8 @@ void main() { Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i PROGRAM - (byte*) SCREEN ← (word/signed word) 1024 + (byte*~) $0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN ← (byte*~) $0 proc (void()) main() (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: @@ -26,6 +27,7 @@ endproc // main() call main SYMBOLS +(byte*~) $0 (byte*) SCREEN (void()) main() (boolean~) main::$0 @@ -35,7 +37,8 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*~) $0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN ← (byte*~) $0 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -59,7 +62,8 @@ main::@return: scope:[main] from main::@2 Removing empty block main::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*~) $0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN ← (byte*~) $0 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -82,7 +86,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*~) $0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN ← (byte*~) $0 to:@1 main: scope:[main] from @1 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -108,7 +113,8 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*~) $0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN#0 ← (byte*~) $0 to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) @@ -135,7 +141,8 @@ main::@return: scope:[main] from main::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*~) $0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN#0 ← (byte*~) $0 to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) @@ -161,6 +168,7 @@ main::@return: scope:[main] from main::@1 @end: scope:[] from @2 INITIAL SSA SYMBOL TABLE +(byte*~) $0 (label) @1 (label) @2 (label) @begin @@ -183,7 +191,8 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*~) $0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN#0 ← (byte*~) $0 to:@1 main: scope:[main] from @1 (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) @@ -206,11 +215,11 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Alias (byte*) SCREEN#0 = (byte*) SCREEN#2 (byte*) SCREEN#3 +Alias (byte*) SCREEN#0 = (byte*) SCREEN#2 (byte*) SCREEN#3 (byte*~) $0 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -235,7 +244,7 @@ Self Phi Eliminated (byte*) SCREEN#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -260,7 +269,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -284,7 +293,7 @@ Simple Condition (boolean~) main::$0 if((byte) main::i#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -303,7 +312,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -355,7 +364,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@return @@ -733,7 +742,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) 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 8b08466fe..f3eab1c78 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@return 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 e73b9cbee..3c91ed667 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log @@ -49,8 +49,8 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1 ← (word/signed word) 1024 - (byte*) SCREEN2 ← (word/signed word) 1280 + (byte*) SCREEN1 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -83,8 +83,8 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1 ← (word/signed word) 1024 - (byte*) SCREEN2 ← (word/signed word) 1280 + (byte*) SCREEN1 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -116,8 +116,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN1 ← (word/signed word) 1024 - (byte*) SCREEN2 ← (word/signed word) 1280 + (byte*) SCREEN1 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -154,8 +154,8 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN1#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1280 + (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 ) @@ -197,8 +197,8 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN1#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1280 + (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 ) @@ -275,8 +275,8 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1280 + (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 ) @@ -321,8 +321,8 @@ Alias (byte*) SCREEN2#2 = (byte*) SCREEN2#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1280 + (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -362,8 +362,8 @@ Self Phi Eliminated (byte*) SCREEN2#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1280 + (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -402,8 +402,8 @@ Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#2 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1280 + (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -438,8 +438,8 @@ Simple Condition (boolean~) main::$1 if((byte) main::j#1!=(byte/word/signed word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN1#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1280 + (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -467,8 +467,8 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN1#0 = 1024 -Constant (const byte*) SCREEN2#0 = 1280 +Constant (const byte*) SCREEN1#0 = ((byte*))1024 +Constant (const byte*) SCREEN2#0 = ((byte*))1280 Constant (const byte) main::i#0 = 0 Constant (const byte) main::j#0 = 100 Succesful SSA optimization Pass2ConstantIdentification @@ -569,9 +569,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN1 -(const byte*) SCREEN1#0 = (word/signed word) 1024 +(const byte*) SCREEN1#0 = ((byte*))(word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 = (word/signed word) 1280 +(const byte*) SCREEN2#0 = ((byte*))(word/signed word) 1280 (void()) main() (label) main::@1 (label) main::@2 @@ -1098,9 +1098,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN1 -(const byte*) SCREEN1#0 SCREEN1 = (word/signed word) 1024 +(const byte*) SCREEN1#0 SCREEN1 = ((byte*))(word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1280 +(const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1280 (void()) main() (label) main::@1 (label) main::@2 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 339578f77..dd8bcb04c 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/signed word) 1024 +(const byte*) SCREEN1#0 SCREEN1 = ((byte*))(word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1280 +(const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1280 (void()) main() (label) main::@1 (label) main::@2 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 382f4aa7b..cba303149 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log @@ -210,12 +210,12 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) CHARSET ← (word/signed word) 8192 - (byte*) CHARGEN ← (word) 53248 - (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 - (byte*) D018 ← (word) 53272 - (byte*) CHARSET4 ← (word/signed word) 10240 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN ← ((byte*)) (word) 53248 + (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018 ← ((byte*)) (word) 53272 + (byte*) CHARSET4 ← ((byte*)) (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 @@ -334,12 +334,12 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) CHARSET ← (word/signed word) 8192 - (byte*) CHARGEN ← (word) 53248 - (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 - (byte*) D018 ← (word) 53272 - (byte*) CHARSET4 ← (word/signed word) 10240 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN ← ((byte*)) (word) 53248 + (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018 ← ((byte*)) (word) 53272 + (byte*) CHARSET4 ← ((byte*)) (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 @@ -468,12 +468,12 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) CHARSET#0 ← (word/signed word) 8192 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) CHARSET4#0 ← ((byte*)) (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 @@ -688,12 +688,12 @@ main::@return: scope:[main] from main::@12 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) CHARSET#0 ← (word/signed word) 8192 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) CHARSET4#0 ← ((byte*)) (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 @@ -1111,12 +1111,12 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) CHARSET#0 ← (word/signed word) 8192 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) CHARSET4#0 ← ((byte*)) (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 @@ -1334,12 +1334,12 @@ Inversing boolean not (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signe Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) CHARSET#0 ← (word/signed word) 8192 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) CHARSET4#0 ← ((byte*)) (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 @@ -1606,12 +1606,12 @@ Alias (byte*) D018#1 = (byte*) D018#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) CHARSET#0 ← (word/signed word) 8192 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) CHARSET4#0 ← ((byte*)) (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 @@ -1766,12 +1766,12 @@ 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/signed word) 1024 - (byte*) CHARSET#0 ← (word/signed word) 8192 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) CHARSET4#0 ← ((byte*)) (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 @@ -1894,12 +1894,12 @@ Self Phi Eliminated (byte*) D018#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) CHARSET#0 ← (word/signed word) 8192 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) CHARSET4#0 ← ((byte*)) (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 @@ -2020,12 +2020,12 @@ Redundant Phi (byte*) D018#1 (byte*) D018#10 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) CHARSET#0 ← (word/signed word) 8192 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) CHARSET4#0 ← ((byte*)) (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 @@ -2138,12 +2138,12 @@ Simple Condition (boolean~) main::$44 if((byte) main::i#1!=(byte/signed byte/wor Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) CHARSET#0 ← (word/signed word) 8192 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) D018#0 ← (word) 53272 - (byte*) CHARSET4#0 ← (word/signed word) 10240 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) D018#0 ← ((byte*)) (word) 53272 + (byte*) CHARSET4#0 ← ((byte*)) (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 @@ -2241,12 +2241,12 @@ main::@return: scope:[main] from main::@12 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 -Constant (const byte*) CHARSET#0 = 8192 -Constant (const byte*) CHARGEN#0 = 53248 -Constant (const byte*) PROCPORT#0 = 1 -Constant (const byte*) D018#0 = 53272 -Constant (const byte*) CHARSET4#0 = 10240 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte*) CHARSET#0 = ((byte*))8192 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) CHARSET4#0 = ((byte*))10240 Constant (const byte[]) bits_count#0 = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 } Constant (const byte) main::bits_gen#0 = 0 Constant (const byte) main::i#0 = 0 @@ -2591,17 +2591,17 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) CHARGEN -(const byte*) CHARGEN#0 = (word) 53248 +(const byte*) CHARGEN#0 = ((byte*))(word) 53248 (byte*) CHARSET -(const byte*) CHARSET#0 = (word/signed word) 8192 +(const byte*) CHARSET#0 = ((byte*))(word/signed word) 8192 (byte*) CHARSET4 -(const byte*) CHARSET4#0 = (word/signed word) 10240 +(const byte*) CHARSET4#0 = ((byte*))(word/signed word) 10240 (byte*) D018 -(const byte*) D018#0 = (word) 53272 +(const byte*) D018#0 = ((byte*))(word) 53272 (byte*) PROCPORT -(const byte*) PROCPORT#0 = (byte/signed byte/word/signed word) 1 +(const byte*) PROCPORT#0 = ((byte*))(byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte[]) bits_count (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() @@ -5209,17 +5209,17 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) CHARGEN -(const byte*) CHARGEN#0 CHARGEN = (word) 53248 +(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248 (byte*) CHARSET -(const byte*) CHARSET#0 CHARSET = (word/signed word) 8192 +(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word) 8192 (byte*) CHARSET4 -(const byte*) CHARSET4#0 CHARSET4 = (word/signed word) 10240 +(const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word) 10240 (byte*) D018 -(const byte*) D018#0 D018 = (word) 53272 +(const byte*) D018#0 D018 = ((byte*))(word) 53272 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 +(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte[]) bits_count (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() 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 b9544c1cc..e6292060d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym @@ -2,17 +2,17 @@ (label) @begin (label) @end (byte*) CHARGEN -(const byte*) CHARGEN#0 CHARGEN = (word) 53248 +(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248 (byte*) CHARSET -(const byte*) CHARSET#0 CHARSET = (word/signed word) 8192 +(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word) 8192 (byte*) CHARSET4 -(const byte*) CHARSET4#0 CHARSET4 = (word/signed word) 10240 +(const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word) 10240 (byte*) D018 -(const byte*) D018#0 D018 = (word) 53272 +(const byte*) D018#0 D018 = ((byte*))(word) 53272 (byte*) PROCPORT -(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 +(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word) 1 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte[]) bits_count (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() 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 4b45cd4a6..1a2fbfd4d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log @@ -41,7 +41,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -72,7 +72,7 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -102,7 +102,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -136,7 +136,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) @@ -174,7 +174,7 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) @@ -241,7 +241,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) @@ -279,7 +279,7 @@ Inversing boolean not (boolean~) main::$1 ← (byte) main::i#2 >= (byte/signed b Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) @@ -318,7 +318,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -352,7 +352,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#4 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -383,7 +383,7 @@ Self Phi Eliminated (byte*) SCREEN#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -414,7 +414,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -445,7 +445,7 @@ Simple Condition (boolean~) main::$2 if((byte) main::i#1<(byte/signed byte/word/ Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -469,7 +469,7 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -529,7 +529,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -965,7 +965,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 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 33a9ba1f3..7468e5b17 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(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 b6ed0e30e..0a5779eb8 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/incd020.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/incd020.log @@ -30,7 +30,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) BGCOL ← (word) 53280 + (byte*) BGCOL ← ((byte*)) (word) 53280 to:@1 main: scope:[main] from to:main::@1 @@ -52,7 +52,7 @@ main::@return: scope:[main] from main::@2 Removing empty block main::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) BGCOL ← (word) 53280 + (byte*) BGCOL ← ((byte*)) (word) 53280 to:@1 main: scope:[main] from to:main::@1 @@ -73,7 +73,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) BGCOL ← (word) 53280 + (byte*) BGCOL ← ((byte*)) (word) 53280 to:@1 main: scope:[main] from @1 to:main::@1 @@ -97,7 +97,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) BGCOL#0 ← (word) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 to:@1 main: scope:[main] from @1 (byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 ) @@ -121,7 +121,7 @@ main::@return: scope:[main] from main::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) BGCOL#0 ← (word) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 to:@1 main: scope:[main] from @1 (byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 ) @@ -161,7 +161,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) BGCOL#0 ← (word) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 to:@1 main: scope:[main] from @1 (byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 ) @@ -185,7 +185,7 @@ Alias (byte*) BGCOL#0 = (byte*) BGCOL#2 (byte*) BGCOL#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) BGCOL#0 ← (word) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 to:@1 main: scope:[main] from @1 to:main::@1 @@ -207,7 +207,7 @@ Self Phi Eliminated (byte*) BGCOL#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) BGCOL#0 ← (word) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 to:@1 main: scope:[main] from @1 to:main::@1 @@ -229,7 +229,7 @@ Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) BGCOL#0 ← (word) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 to:@1 main: scope:[main] from @1 to:main::@1 @@ -246,7 +246,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Constant (const byte*) BGCOL#0 = 53280 +Constant (const byte*) BGCOL#0 = ((byte*))53280 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -271,7 +271,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 = (word) 53280 +(const byte*) BGCOL#0 = ((byte*))(word) 53280 (void()) main() (label) main::@1 (label) main::@return @@ -543,7 +543,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (word) 53280 +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280 (void()) main() (label) main::@1 (label) main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/incd020.sym b/src/main/java/dk/camelot64/kickc/test/ref/incd020.sym index c8460fdf8..b927bf222 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/incd020.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/incd020.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (word) 53280 +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280 (void()) main() (label) main::@1 (label) main::@return 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 076cd722b..730284a0f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log @@ -51,7 +51,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (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 @@ -87,7 +87,7 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (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 @@ -122,7 +122,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (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 @@ -160,7 +160,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 @@ -210,7 +210,7 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 @@ -303,7 +303,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 @@ -353,7 +353,7 @@ Inversing boolean not (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed b Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 @@ -406,7 +406,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#5 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 @@ -450,7 +450,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 @@ -490,7 +490,7 @@ Self Phi Eliminated (byte*) SCREEN#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 @@ -530,7 +530,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 @@ -568,7 +568,7 @@ Simple Condition (boolean~) main::$3 if((byte) main::i#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 @@ -599,7 +599,7 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte[]) TXT#0 = { 3, 1, 13, 5, 12, 15, 20, 32 } Constant (const byte) main::j#0 = 0 Constant (const byte) main::i#0 = 0 @@ -681,7 +681,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte[]) TXT (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() @@ -1256,7 +1256,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte[]) TXT (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() 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 aac88a9bb..de73716f6 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte[]) TXT (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() 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 c49777147..261b8ee02 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log @@ -55,7 +55,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT ← (string) "camelot " to:@1 main: scope:[main] from @@ -92,7 +92,7 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT ← (string) "camelot " to:@1 main: scope:[main] from @@ -128,7 +128,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -167,7 +167,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -218,7 +218,7 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -313,7 +313,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -364,7 +364,7 @@ Inversing boolean not (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed b Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -419,7 +419,7 @@ Alias (byte[]) TEXT#1 = (byte[]) TEXT#5 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -465,7 +465,7 @@ Alias (byte[]) TEXT#1 = (byte[]) TEXT#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -507,7 +507,7 @@ Self Phi Eliminated (byte*) SCREEN#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -548,7 +548,7 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -587,7 +587,7 @@ Simple Condition (boolean~) main::$4 if((byte*) main::cursor#1<(byte*~) main::$3 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte[]) TEXT#0 ← (string) "camelot " to:@1 main: scope:[main] from @1 @@ -619,7 +619,7 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte[]) TEXT#0 = "camelot " Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#2 = 0 @@ -734,7 +734,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte[]) TEXT (const byte[]) TEXT#0 = (string) "camelot " (void()) main() @@ -1383,7 +1383,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(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/inmemstring.sym b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.sym index 5264f7bd5..89e73e59b 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(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.log b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log index 0c14c39f4..4bdb8ca44 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log @@ -38,7 +38,7 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[16]) main::buf ← (word/signed word) 4352 + (byte[16]) main::buf ← ((byte*)) (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 @@ -65,7 +65,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[16]) main::buf ← (word/signed word) 4352 + (byte[16]) main::buf ← ((byte*)) (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 @@ -91,7 +91,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf ← (word/signed word) 4352 + (byte[16]) main::buf ← ((byte*)) (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 @@ -118,7 +118,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte[16]) main::buf#0 ← ((byte*)) (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 @@ -146,7 +146,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte[16]) main::buf#0 ← ((byte*)) (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 @@ -196,7 +196,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte[16]) main::buf#0 ← ((byte*)) (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 @@ -224,7 +224,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte[16]) main::buf#0 ← ((byte*)) (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 @@ -251,7 +251,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte[16]) main::buf#0 ← ((byte*)) (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 @@ -278,7 +278,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte[16]) main::buf#0 ← ((byte*)) (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 @@ -304,7 +304,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[16]) main::buf#0 ← (word/signed word) 4352 + (byte[16]) main::buf#0 ← ((byte*)) (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 @@ -323,7 +323,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Constant (const byte[16]) main::buf#0 = 4352 +Constant (const byte[16]) main::buf#0 = ((byte*))4352 Constant (const byte) main::i#0 = 5 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -436,7 +436,7 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte[16]) main::buf -(const byte[16]) main::buf#0 = (word/signed word) 4352 +(const byte[16]) main::buf#0 = ((byte*))(word/signed word) 4352 (byte) main::i (byte) main::i#1 (byte) main::i#2 @@ -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/signed word) 4352 +(const byte[16]) main::buf#0 buf = ((byte*))(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/iterarray.sym b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.sym index 0c7b678ab..f82e77942 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/signed word) 4352 +(const byte[16]) main::buf#0 buf = ((byte*))(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.log b/src/main/java/dk/camelot64/kickc/test/ref/literals.log index 8d7f5c816..decb37c78 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/literals.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/literals.log @@ -60,7 +60,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte) char ← (byte) 'a' (byte) num ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -97,7 +97,7 @@ main::@return: scope:[main] from main::@2 Removing empty block main::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte) char ← (byte) 'a' (byte) num ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -133,7 +133,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 (byte) char ← (byte) 'a' (byte) num ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -172,7 +172,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) char#0 ← (byte) 'a' (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -222,7 +222,7 @@ main::@return: scope:[main] from main::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) char#0 ← (byte) 'a' (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -317,7 +317,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) char#0 ← (byte) 'a' (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -371,7 +371,7 @@ Alias (byte[]) nums#0 = (byte[]) nums#2 (byte[]) nums#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) char#0 ← (byte) 'a' (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -412,7 +412,7 @@ Self Phi Eliminated (byte[]) nums#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) char#0 ← (byte) 'a' (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -453,7 +453,7 @@ Redundant Phi (byte[]) nums#1 (byte[]) nums#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) char#0 ← (byte) 'a' (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -489,7 +489,7 @@ Simple Condition (boolean~) main::$4 if((byte) main::i#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) char#0 ← (byte) 'a' (byte) num#0 ← (byte/signed byte/word/signed word) 1 (string~) $0 ← (string) "bc" + (string) "d" @@ -520,7 +520,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) char#0 = 'a' Constant (const byte) num#0 = 1 Constant (const string) $0 = "bc"+"d" @@ -687,7 +687,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte) char (const byte) char#0 = (byte) 'a' (void()) main() @@ -1182,7 +1182,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte) char (const byte) char#0 char = (byte) 'a' (void()) main() 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 7c6e1f891..97dc6a707 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte) char (const byte) char#0 char = (byte) 'a' (void()) main() 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 05b14cacc..dc38a644b 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log @@ -56,7 +56,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 100 @@ -98,7 +98,7 @@ Removing empty block @1 Removing empty block nest::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 100 @@ -133,7 +133,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i ← (byte/signed byte/word/signed word) 100 @@ -175,7 +175,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 ) @@ -221,7 +221,7 @@ nest::@return: scope:[nest] from nest::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 ) @@ -301,7 +301,7 @@ Culled Empty Block (label) @3 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 ) @@ -349,7 +349,7 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#5 (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 @@ -391,7 +391,7 @@ Self Phi Eliminated (byte*) SCREEN#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 @@ -433,7 +433,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 @@ -473,7 +473,7 @@ Simple Condition (boolean~) nest::$0 if((byte) nest::j#1>(byte/signed byte/word/ Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 @@ -506,7 +506,7 @@ nest::@return: scope:[nest] from nest::@1 to:@end @end: scope:[] from @2 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 100 Constant (const byte) nest::j#0 = 100 Succesful SSA optimization Pass2ConstantIdentification @@ -586,7 +586,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@3 @@ -1196,7 +1196,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@3 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 5d2e42d69..235387000 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@3 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 acc03bcd1..d059d17ac 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log @@ -116,7 +116,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 100 @@ -200,7 +200,7 @@ Removing empty block @2 Removing empty block nest2::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 100 @@ -271,7 +271,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i ← (byte/signed byte/word/signed word) 100 @@ -356,7 +356,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 ) @@ -462,7 +462,7 @@ nest2::@return: scope:[nest2] from nest2::@3 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 ) @@ -650,7 +650,7 @@ Culled Empty Block (label) @4 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 ) @@ -764,7 +764,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#4 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 @@ -859,7 +859,7 @@ Self Phi Eliminated (byte) nest2::i#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 @@ -954,7 +954,7 @@ Redundant Phi (byte) nest2::i#2 (byte) nest2::i#4 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 @@ -1043,7 +1043,7 @@ Simple Condition (boolean~) nest2::$1 if((byte) nest2::i#1>(byte/signed byte/wor Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100 @@ -1117,7 +1117,7 @@ nest2::@return: scope:[nest2] from nest2::@3 to:@end @end: scope:[] from @3 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 100 Constant (const byte) main::j#0 = 100 Constant (const byte) nest1::i#0 = 100 @@ -1427,7 +1427,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -2742,7 +2742,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 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 2a43fd89f..677b44c23 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 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 a5b7cda67..e9984e37c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log @@ -67,7 +67,7 @@ INITIAL CONTROL FLOW GRAPH (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 + (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte~) main::$0 ← call inccnt @@ -105,7 +105,7 @@ CONTROL FLOW GRAPH (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 + (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from (byte~) main::$0 ← call inccnt @@ -145,7 +145,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL (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 + (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) inccnt::return ← call inccnt param-assignment @@ -203,7 +203,7 @@ CONTROL FLOW GRAPH SSA (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 + (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) @@ -289,7 +289,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN (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 + (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) @@ -466,7 +466,7 @@ CONTROL FLOW GRAPH (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 + (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 call inccnt param-assignment @@ -509,7 +509,7 @@ Not aliassing across scopes: inccnt::return#0 cnt#1 Constant (const byte) cnt#0 = 0 Constant (const byte) cnt2#0 = 0 Constant (const byte) cnt3#0 = 0 -Constant (const byte[256]) SCREEN#0 = 1024 +Constant (const byte[256]) SCREEN#0 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -686,7 +686,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 = (word/signed word) 1024 +(const byte[256]) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte) cnt (byte) cnt#1 (byte) cnt#11 @@ -1303,7 +1303,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte[256]) SCREEN#0 SCREEN = ((byte*))(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/modglobal.sym b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.sym index 8694aea06..7e106adcb 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/signed word) 1024 +(const byte[256]) SCREEN#0 SCREEN = ((byte*))(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.log b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log index 48c04bd42..655be7270 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log @@ -51,7 +51,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from (byte) cnt ← (byte/signed byte/word/signed word) 0 - (byte[256]) SCREEN ← (word/signed word) 1024 + (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (void~) main::$0 ← call inccnt @@ -81,7 +81,7 @@ Removing empty block @1 CONTROL FLOW GRAPH @begin: scope:[] from (byte) cnt ← (byte/signed byte/word/signed word) 0 - (byte[256]) SCREEN ← (word/signed word) 1024 + (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from (void~) main::$0 ← call inccnt @@ -112,7 +112,7 @@ inccnt modifies cnt CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from (byte) cnt ← (byte/signed byte/word/signed word) 0 - (byte[256]) SCREEN ← (word/signed word) 1024 + (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 call inccnt param-assignment @@ -153,7 +153,7 @@ Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte) cnt#0 ← (byte/signed byte/word/signed word) 0 - (byte[256]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) @@ -203,7 +203,7 @@ inccnt::@return: scope:[inccnt] from inccnt CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte) cnt#0 ← (byte/signed byte/word/signed word) 0 - (byte[256]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) @@ -294,7 +294,7 @@ Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from (byte) cnt#0 ← (byte/signed byte/word/signed word) 0 - (byte[256]) SCREEN#0 ← (word/signed word) 1024 + (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 call inccnt param-assignment @@ -326,7 +326,7 @@ inccnt::@return: scope:[inccnt] from inccnt @end: scope:[] from @3 Constant (const byte) cnt#0 = 0 -Constant (const byte[256]) SCREEN#0 = 1024 +Constant (const byte[256]) SCREEN#0 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -468,7 +468,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 = (word/signed word) 1024 +(const byte[256]) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte) cnt (byte) cnt#1 (byte) cnt#11 @@ -936,7 +936,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte[256]) SCREEN#0 SCREEN = ((byte*))(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/modglobalmin.sym b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.sym index 98f5d6377..8348b8492 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/signed word) 1024 +(const byte[256]) SCREEN#0 SCREEN = ((byte*))(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.log b/src/main/java/dk/camelot64/kickc/test/ref/overlap-allocation-2.log index 6ae0def4f..5cb4644d1 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 @@ -75,7 +75,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -128,7 +128,7 @@ Removing empty block @1 Removing empty block @2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -174,7 +174,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -237,7 +237,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 ) @@ -312,7 +312,7 @@ plot::@return: scope:[plot] from plot CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 ) @@ -443,7 +443,7 @@ Culled Empty Block (label) @4 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 ) @@ -526,7 +526,7 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -594,7 +594,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -662,7 +662,7 @@ Self Phi Eliminated (byte*) SCREEN#5 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -726,7 +726,7 @@ Redundant Phi (byte*) SCREEN#5 (byte*) SCREEN#4 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -787,7 +787,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -848,7 +848,7 @@ Simple Condition (boolean~) main::$3 if((byte) main::j#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -902,7 +902,7 @@ plot::@return: scope:[plot] from plot to:@end @end: scope:[] from @3 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 0 Constant (const byte) main::j#0 = 10 Succesful SSA optimization Pass2ConstantIdentification @@ -1086,7 +1086,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) line((byte) line::l) (byte~) line::$1 (label) line::@1 @@ -2045,7 +2045,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) line((byte) line::l) (byte~) line::$1 reg byte a 4.0 (label) line::@1 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 534ffe203..e0417482e 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) line((byte) line::l) (byte~) line::$1 reg byte a 4.0 (label) line::@1 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 b6b2c374c..437590246 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 @@ -71,7 +71,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -122,7 +122,7 @@ Removing empty block main::@6 Removing empty block @1 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -169,7 +169,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -229,7 +229,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 ) @@ -303,7 +303,7 @@ plot::@return: scope:[plot] from plot CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 ) @@ -433,7 +433,7 @@ Culled Empty Block (label) @3 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 ) @@ -516,7 +516,7 @@ Alias (byte*) SCREEN#10 = (byte*) SCREEN#4 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -585,7 +585,7 @@ Self Phi Eliminated (byte*) SCREEN#10 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -651,7 +651,7 @@ Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#3 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -712,7 +712,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -774,7 +774,7 @@ Simple Condition (boolean~) main::$5 if((byte) main::k#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@2 main: scope:[main] from @2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -827,7 +827,7 @@ plot::@return: scope:[plot] from plot to:@end @end: scope:[] from @2 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 0 Constant (const byte) main::j#0 = 0 Constant (const byte) main::k#0 = 0 @@ -1001,7 +1001,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 @@ -1920,7 +1920,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@1 (label) main::@2 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 7eb405cd3..8a0c5e317 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(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 2416277fa..87d47b0fe 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 @@ -27,8 +27,8 @@ main::@2: scope:[main] from main::@2 main::@3 [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/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) + [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) + [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(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 926de5a3b..f1f835f92 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 @@ -24,8 +24,8 @@ void main() { } // Incrementing directly on a word - ++*$d020; - --*($d000+$21); + ++*(byte*)$d020; + --*(byte*)($d000+$21); // Increment on a const named pointer byte* BGCOL = $d020; @@ -33,8 +33,8 @@ void main() { } -Adding pre/post-modifier *((word) 53280) ← ++ *((word) 53280) -Adding pre/post-modifier *((var) main::$13) ← -- *((var) main::$13) +Adding pre/post-modifier *((var) main::$13) ← ++ *((var) main::$13) +Adding pre/post-modifier *((var) main::$17) ← -- *((var) main::$17) Adding pre/post-modifier *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) PROGRAM proc (void()) main() @@ -66,11 +66,17 @@ main::@2: (byte) main::j ← ++ (byte) main::j (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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 (byte*) main::BGCOL ← (word) 53280 *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) main::@return: @@ -85,10 +91,16 @@ SYMBOLS (byte*~) main::$10 (byte*~) main::$11 (boolean~) main::$12 -(word~) main::$13 -(word~) main::$14 -(word~) main::$15 +(byte*~) main::$13 +(byte*~) main::$14 +(byte*~) main::$15 +(word~) main::$16 +(byte*~) main::$17 +(word~) main::$18 +(byte*~) main::$19 (byte*~) main::$2 +(word~) main::$20 +(byte*~) main::$21 (boolean~) main::$3 (byte*~) main::$4 (byte*~) main::$5 @@ -110,7 +122,7 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte*) main::screen ← (word/signed word) 1024 + (byte*) main::screen ← ((byte*)) (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/signed byte/word/signed word) 0 @@ -144,12 +156,18 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 + (byte*) main::BGCOL ← ((byte*)) (word) 53280 *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) to:main::@return main::@return: scope:[main] from main::@4 @@ -166,7 +184,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen ← (word/signed word) 1024 + (byte*) main::screen ← ((byte*)) (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/signed byte/word/signed word) 0 @@ -200,12 +218,18 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 + (byte*) main::BGCOL ← ((byte*)) (word) 53280 *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) to:main::@return main::@return: scope:[main] from main::@4 @@ -223,7 +247,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*) main::screen#0 ← ((byte*)) (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/signed byte/word/signed word) 0 @@ -262,12 +286,18 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 + (byte*) main::BGCOL#0 ← ((byte*)) (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -284,7 +314,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*) main::screen#0 ← ((byte*)) (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/signed byte/word/signed word) 0 @@ -323,12 +353,18 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 + (byte*) main::BGCOL#0 ← ((byte*)) (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -352,10 +388,16 @@ INITIAL SSA SYMBOL TABLE (byte*~) main::$10 (byte*~) main::$11 (boolean~) main::$12 -(word~) main::$13 -(word~) main::$14 -(word~) main::$15 +(byte*~) main::$13 +(byte*~) main::$14 +(byte*~) main::$15 +(word~) main::$16 +(byte*~) main::$17 +(word~) main::$18 +(byte*~) main::$19 (byte*~) main::$2 +(word~) main::$20 +(byte*~) main::$21 (boolean~) main::$3 (byte*~) main::$4 (byte*~) main::$5 @@ -394,7 +436,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*) main::screen#0 ← ((byte*)) (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/signed byte/word/signed word) 0 @@ -433,12 +475,18 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 + (byte*) main::BGCOL#0 ← ((byte*)) (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -457,7 +505,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*) main::screen#0 ← ((byte*)) (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/signed byte/word/signed word) 0 @@ -494,12 +542,18 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 + (byte*) main::BGCOL#0 ← ((byte*)) (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -518,7 +572,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*) main::screen#0 ← ((byte*)) (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/signed byte/word/signed word) 0 @@ -555,12 +609,18 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 + (byte*) main::BGCOL#0 ← ((byte*)) (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -578,7 +638,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*) main::screen#0 ← ((byte*)) (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/signed byte/word/signed word) 0 @@ -613,12 +673,18 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 + (byte*) main::BGCOL#0 ← ((byte*)) (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -636,7 +702,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::screen#0 ← (word/signed word) 1024 + (byte*) main::screen#0 ← ((byte*)) (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/signed byte/word/signed word) 0 @@ -669,12 +735,18 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33 - *((word~) main::$13) ← -- *((word~) main::$13) - (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::$13 ← ((byte*)) (word) 53280 + *((byte*~) main::$13) ← ++ *((byte*~) main::$13) + (byte*~) main::$14 ← ((byte*)) (word) 53280 + (byte*~) main::$15 ← ((byte*)) (word) 53280 + (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$17 ← ((byte*)) (word~) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$19 ← ((byte*)) (word~) main::$18 + (word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33 + (byte*~) main::$21 ← ((byte*)) (word~) main::$20 + (byte*) main::BGCOL#0 ← ((byte*)) (word) 53280 *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -685,13 +757,16 @@ main::@return: scope:[main] from main::@4 to:@end @end: scope:[] from @1 -Constant (const byte*) main::screen#0 = 1024 +Constant (const byte*) main::screen#0 = ((byte*))1024 Constant (const byte) main::i#0 = 0 Constant (const byte) main::j#0 = 0 -Constant (const word) main::$13 = 53248+33 -Constant (const word) main::$14 = 53248+33 -Constant (const word) main::$15 = 53248+33 -Constant (const byte*) main::BGCOL#0 = 53280 +Constant (const byte*) main::$13 = ((byte*))53280 +Constant (const byte*) main::$14 = ((byte*))53280 +Constant (const byte*) main::$15 = ((byte*))53280 +Constant (const word) main::$16 = 53248+33 +Constant (const word) main::$18 = 53248+33 +Constant (const word) main::$20 = 53248+33 +Constant (const byte*) main::BGCOL#0 = ((byte*))53280 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -727,8 +802,11 @@ main::@2: scope:[main] from main::@2 main::@3 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) - *((const word) main::$13) ← -- *((const word) main::$13) + *((const byte*) main::$13) ← ++ *((const byte*) main::$13) + (byte*~) main::$17 ← ((byte*)) (const word) main::$16 + *((byte*~) main::$17) ← -- *((byte*~) main::$17) + (byte*~) main::$19 ← ((byte*)) (const word) main::$18 + (byte*~) main::$21 ← ((byte*)) (const word) main::$20 *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -747,6 +825,9 @@ Constant (const byte*) main::$6 = main::screen#0+82 Constant (const byte*) main::$7 = main::screen#0+122 Constant (const byte*) main::$8 = main::screen#0+160 Constant (const byte*) main::$10 = main::screen#0+200 +Constant (const byte*) main::$17 = ((byte*))main::$16 +Constant (const byte*) main::$19 = ((byte*))main::$18 +Constant (const byte*) main::$21 = ((byte*))main::$20 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -774,8 +855,8 @@ main::@2: scope:[main] from main::@2 main::@3 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) - *((const word) main::$13) ← -- *((const word) main::$13) + *((const byte*) main::$13) ← ++ *((const byte*) main::$13) + *((const byte*) main::$17) ← -- *((const byte*) main::$17) *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) to:main::@return main::@return: scope:[main] from main::@4 @@ -798,17 +879,23 @@ 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::$13 = ((byte*))(word) 53280 +Constant inlined main::$14 = ((byte*))(word) 53280 +Constant inlined main::$15 = ((byte*))(word) 53280 +Constant inlined main::$20 = (word) 53248+(byte/signed byte/word/signed word) 33 +Constant inlined main::$10 = (const byte*) main::screen#0+(byte/word/signed word) 200 +Constant inlined main::$21 = ((byte*))(word) 53248+(byte/signed byte/word/signed word) 33 +Constant inlined main::$16 = (word) 53248+(byte/signed byte/word/signed word) 33 Constant inlined main::$1 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 +Constant inlined main::$17 = ((byte*))(word) 53248+(byte/signed byte/word/signed word) 33 +Constant inlined main::$18 = (word) 53248+(byte/signed byte/word/signed word) 33 Constant inlined main::$0 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 80 +Constant inlined main::$19 = ((byte*))(word) 53248+(byte/signed byte/word/signed word) 33 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 @@ -837,8 +924,8 @@ main::@2: scope:[main] from main::@2 main::@3 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/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) + *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) + *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(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 @@ -863,7 +950,7 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte*) main::BGCOL -(const byte*) main::BGCOL#0 = (word) 53280 +(const byte*) main::BGCOL#0 = ((byte*))(word) 53280 (byte) main::a (byte) main::a#0 (byte) main::i @@ -875,7 +962,7 @@ FINAL SYMBOL TABLE (byte*) main::sc2 (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/signed word) 1024 +(const byte*) main::screen#0 = ((byte*))(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) @@ -911,8 +998,8 @@ main::@2: scope:[main] from main::@3 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/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) + *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) + *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(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 @@ -961,8 +1048,8 @@ main::@2: scope:[main] from main::@3 main::@6 [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/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] + [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] + [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(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 @@ -1015,8 +1102,8 @@ main::@2: scope:[main] from main::@2 main::@3 [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/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] + [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] + [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(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 @@ -1053,8 +1140,8 @@ main::@2: scope:[main] from main::@2 main::@3 [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/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) + [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) + [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(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 @@ -1238,9 +1325,9 @@ main: { jmp b4 //SEG30 main::@4 b4: - //SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 + //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc $d020 - //SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 + //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 dec $d000+$21 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc BGCOL @@ -1391,9 +1478,9 @@ main: { bne b2_from_b2 //SEG30 main::@4 b4: - //SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 + //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc $d020 - //SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 + //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 dec $d000+$21 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc BGCOL @@ -1501,9 +1588,9 @@ main: { bne b2_from_b2 //SEG30 main::@4 b4: - //SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 + //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc $d020 - //SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 + //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 dec $d000+$21 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc BGCOL @@ -1612,9 +1699,9 @@ main: { bne b2 //SEG30 main::@4 b4: - //SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 + //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc $d020 - //SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 + //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 dec $d000+$21 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc BGCOL @@ -1719,9 +1806,9 @@ main: { cpx #$b bne b2 //SEG30 main::@4 - //SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 + //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc $d020 - //SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 + //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 dec $d000+$21 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc BGCOL @@ -1818,9 +1905,9 @@ main: { cpx #$b bne b2 //SEG30 main::@4 - //SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 + //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc $d020 - //SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 + //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 dec $d000+$21 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc BGCOL @@ -1843,7 +1930,7 @@ FINAL SYMBOL TABLE (label) main::@4 (label) main::@return (byte*) main::BGCOL -(const byte*) main::BGCOL#0 BGCOL = (word) 53280 +(const byte*) main::BGCOL#0 BGCOL = ((byte*))(word) 53280 (byte) main::a (byte) main::a#0 reg byte a 20.0 (byte) main::i @@ -1855,7 +1942,7 @@ FINAL SYMBOL TABLE (byte*) main::sc2 (const byte*) main::sc2#0 sc2 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81 (byte*) main::screen -(const byte*) main::screen#0 screen = (word/signed word) 1024 +(const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024 reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] @@ -1948,9 +2035,9 @@ main: { cpx #$b bne b2 //SEG30 main::@4 - //SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 + //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc $d020 - //SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 + //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 dec $d000+$21 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 inc BGCOL diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.sym b/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.sym index e53aec5d9..c3a4a7478 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptr-complex.sym @@ -11,7 +11,7 @@ (label) main::@4 (label) main::@return (byte*) main::BGCOL -(const byte*) main::BGCOL#0 BGCOL = (word) 53280 +(const byte*) main::BGCOL#0 BGCOL = ((byte*))(word) 53280 (byte) main::a (byte) main::a#0 reg byte a 20.0 (byte) main::i @@ -23,7 +23,7 @@ (byte*) main::sc2 (const byte*) main::sc2#0 sc2 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81 (byte*) main::screen -(const byte*) main::screen#0 screen = (word/signed word) 1024 +(const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024 reg byte x [ 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/ptrtest.cfg b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.cfg index 6557432bc..231b22318 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.cfg @@ -24,7 +24,7 @@ lvaluevar: scope:[lvaluevar] from main::@3 [7] phi() [ ] ( main:0::lvaluevar:5 [ ] ) to:lvaluevar::@1 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 - [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) + [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [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 ] ) to:lvaluevar::@return @@ -40,7 +40,7 @@ rvaluevar: scope:[rvaluevar] from main::@2 [14] phi() [ ] ( main:0::rvaluevar:4 [ ] ) to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 - [15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) + [15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [15] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [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 ] ) to:rvaluevar::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log index be118d427..e47bfb833 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log @@ -218,7 +218,7 @@ main::@return: scope:[main] from main @1: scope:[] from @begin to:@2 lvalue: scope:[lvalue] from - (byte[1024]) lvalue::SCREEN ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i ← (byte/signed byte/word/signed word) 2 @@ -245,7 +245,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@3 @2: scope:[] from @1 to:@3 rvalue: scope:[rvalue] from - (byte[1024]) rvalue::SCREEN ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b ← (byte~) rvalue::$0 @@ -274,7 +274,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@3 @3: scope:[] from @2 to:@4 lvaluevar: scope:[lvaluevar] from - (byte*) lvaluevar::screen ← (word/signed word) 1024 + (byte*) lvaluevar::screen ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -301,7 +301,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@3 @4: scope:[] from @3 to:@5 rvaluevar: scope:[rvaluevar] from - (byte*) rvaluevar::screen ← (word/signed word) 1024 + (byte*) rvaluevar::screen ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -362,7 +362,7 @@ main::@return: scope:[main] from main return to:@return lvalue: scope:[lvalue] from - (byte[1024]) lvalue::SCREEN ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i ← (byte/signed byte/word/signed word) 2 @@ -379,7 +379,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from - (byte[1024]) rvalue::SCREEN ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b ← (byte~) rvalue::$0 @@ -398,7 +398,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return lvaluevar: scope:[lvaluevar] from - (byte*) lvaluevar::screen ← (word/signed word) 1024 + (byte*) lvaluevar::screen ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -415,7 +415,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from - (byte*) rvaluevar::screen ← (word/signed word) 1024 + (byte*) rvaluevar::screen ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -458,7 +458,7 @@ main::@return: scope:[main] from main::@4 return to:@return lvalue: scope:[lvalue] from main - (byte[1024]) lvalue::SCREEN ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i ← (byte/signed byte/word/signed word) 2 @@ -475,7 +475,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from main::@1 - (byte[1024]) rvalue::SCREEN ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b ← (byte~) rvalue::$0 @@ -494,7 +494,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return lvaluevar: scope:[lvaluevar] from main::@3 - (byte*) lvaluevar::screen ← (word/signed word) 1024 + (byte*) lvaluevar::screen ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -511,7 +511,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from main::@2 - (byte*) rvaluevar::screen ← (word/signed word) 1024 + (byte*) rvaluevar::screen ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -556,7 +556,7 @@ main::@return: scope:[main] from main::@4 return to:@return lvalue: scope:[lvalue] from main - (byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -577,7 +577,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from main::@1 - (byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b#1 ← (byte~) rvalue::$0 @@ -600,7 +600,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return lvaluevar: scope:[lvaluevar] from main::@3 - (byte*) lvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -623,7 +623,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from main::@2 - (byte*) rvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -670,7 +670,7 @@ main::@return: scope:[main] from main::@4 return to:@return lvalue: scope:[lvalue] from main - (byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -691,7 +691,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from main::@1 - (byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b#1 ← (byte~) rvalue::$0 @@ -714,7 +714,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return lvaluevar: scope:[lvaluevar] from main::@3 - (byte*) lvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -737,7 +737,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from main::@2 - (byte*) rvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -867,7 +867,7 @@ main::@return: scope:[main] from main::@3 return to:@return lvalue: scope:[lvalue] from main - (byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -888,7 +888,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from main::@1 - (byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b#1 ← (byte~) rvalue::$0 @@ -911,7 +911,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return lvaluevar: scope:[lvaluevar] from main::@3 - (byte*) lvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -934,7 +934,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from main::@2 - (byte*) rvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -989,7 +989,7 @@ main::@return: scope:[main] from main::@3 return to:@return lvalue: scope:[lvalue] from main - (byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -1008,7 +1008,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from main::@1 - (byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -1027,7 +1027,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return lvaluevar: scope:[lvaluevar] from main::@3 - (byte*) lvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -1047,7 +1047,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from main::@2 - (byte*) rvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -1092,7 +1092,7 @@ main::@return: scope:[main] from main::@3 return to:@return lvalue: scope:[lvalue] from main - (byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -1111,7 +1111,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from main::@1 - (byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -1130,7 +1130,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return lvaluevar: scope:[lvaluevar] from main::@3 - (byte*) lvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -1150,7 +1150,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from main::@2 - (byte*) rvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -1195,7 +1195,7 @@ main::@return: scope:[main] from main::@3 return to:@return lvalue: scope:[lvalue] from main - (byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -1213,7 +1213,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from main::@1 - (byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -1231,7 +1231,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return lvaluevar: scope:[lvaluevar] from main::@3 - (byte*) lvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -1250,7 +1250,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from main::@2 - (byte*) rvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -1296,7 +1296,7 @@ main::@return: scope:[main] from main::@3 return to:@return lvalue: scope:[lvalue] from main - (byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -1313,7 +1313,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from main::@1 - (byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 @@ -1330,7 +1330,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return lvaluevar: scope:[lvaluevar] from main::@3 - (byte*) lvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:lvaluevar::@1 @@ -1348,7 +1348,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from main::@2 - (byte*) rvaluevar::screen#0 ← (word/signed word) 1024 + (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 @@ -1369,14 +1369,14 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1 to:@end @end: scope:[] from @5 -Constant (const byte[1024]) lvalue::SCREEN#0 = 1024 +Constant (const byte[1024]) lvalue::SCREEN#0 = ((byte*))1024 Constant (const byte) lvalue::i#0 = 2 -Constant (const byte[1024]) rvalue::SCREEN#0 = 1024 +Constant (const byte[1024]) rvalue::SCREEN#0 = ((byte*))1024 Constant (const byte) rvalue::i#0 = 2 -Constant (const byte*) lvaluevar::screen#0 = 1024 +Constant (const byte*) lvaluevar::screen#0 = ((byte*))1024 Constant (const byte) lvaluevar::b#0 = 4 Constant (const byte) lvaluevar::i#0 = 2 -Constant (const byte*) rvaluevar::screen#0 = 1024 +Constant (const byte*) rvaluevar::screen#0 = ((byte*))1024 Constant (const byte) rvaluevar::i#0 = 2 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -1564,10 +1564,10 @@ Inlining constant with var siblings (const byte*) rvaluevar::screen#0 Inlining constant with var siblings (const byte) rvaluevar::i#0 Inlining constant with var siblings (const byte) rvaluevar::i#0 Constant inlined lvalue::i#0 = (byte/signed byte/word/signed word) 2 -Constant inlined rvaluevar::screen#0 = (word/signed word) 1024 +Constant inlined rvaluevar::screen#0 = ((byte*))(word/signed word) 1024 Constant inlined rvalue::i#0 = (byte/signed byte/word/signed word) 2 Constant inlined lvaluevar::i#0 = (byte/signed byte/word/signed word) 2 -Constant inlined lvaluevar::screen#0 = (word/signed word) 1024 +Constant inlined lvaluevar::screen#0 = ((byte*))(word/signed word) 1024 Constant inlined rvaluevar::i#0 = (byte/signed byte/word/signed word) 2 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @@ -1621,7 +1621,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 lvaluevar: scope:[lvaluevar] from main::@3 to:lvaluevar::@1 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 - (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) + (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 to:lvaluevar::@return @@ -1636,7 +1636,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 rvaluevar: scope:[rvaluevar] from main::@2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 - (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) + (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 to:rvaluevar::@return @@ -1662,7 +1662,7 @@ FINAL SYMBOL TABLE (label) lvalue::@2 (label) lvalue::@return (byte[1024]) lvalue::SCREEN -(const byte[1024]) lvalue::SCREEN#0 = (word/signed word) 1024 +(const byte[1024]) lvalue::SCREEN#0 = ((byte*))(word/signed word) 1024 (byte) lvalue::i (byte) lvalue::i#1 (byte) lvalue::i#2 @@ -1688,7 +1688,7 @@ FINAL SYMBOL TABLE (label) rvalue::@2 (label) rvalue::@return (byte[1024]) rvalue::SCREEN -(const byte[1024]) rvalue::SCREEN#0 = (word/signed word) 1024 +(const byte[1024]) rvalue::SCREEN#0 = ((byte*))(word/signed word) 1024 (byte) rvalue::b (byte) rvalue::b#0 (byte) rvalue::b#1 @@ -1736,7 +1736,7 @@ main::@return: scope:[main] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3 to:lvaluevar::@1 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 - (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*~) lvaluevar::screen#4 ) + (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*~) lvaluevar::screen#4 ) (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte~) lvaluevar::i#4 ) if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 to:lvaluevar::@return @@ -1753,7 +1753,7 @@ lvaluevar::@2: scope:[lvaluevar] from lvaluevar::@1 rvaluevar: scope:[rvaluevar] from main::@2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 - (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*~) rvaluevar::screen#4 ) + (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*~) rvaluevar::screen#4 ) (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte~) rvaluevar::i#4 ) if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 to:rvaluevar::@return @@ -1838,7 +1838,7 @@ lvaluevar: scope:[lvaluevar] from main::@3 [7] phi() [ ] to:lvaluevar::@1 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 - [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*~) lvaluevar::screen#4 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] + [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*~) lvaluevar::screen#4 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] [8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte~) lvaluevar::i#4 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] to:lvaluevar::@return @@ -1856,7 +1856,7 @@ rvaluevar: scope:[rvaluevar] from main::@2 [16] phi() [ ] to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 - [17] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*~) rvaluevar::screen#4 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] + [17] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*~) rvaluevar::screen#4 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] [17] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte~) rvaluevar::i#4 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] [18] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] to:rvaluevar::@return @@ -1946,7 +1946,7 @@ lvaluevar: scope:[lvaluevar] from main::@3 [7] phi() [ ] to:lvaluevar::@1 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 - [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] + [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] [8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] to:lvaluevar::@return @@ -1962,7 +1962,7 @@ rvaluevar: scope:[rvaluevar] from main::@2 [14] phi() [ ] to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 - [15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] + [15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] [15] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] [16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] to:rvaluevar::@return @@ -2032,7 +2032,7 @@ lvaluevar: scope:[lvaluevar] from main::@3 [7] phi() [ ] ( main:0::lvaluevar:5 [ ] ) to:lvaluevar::@1 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 - [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) + [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [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 ] ) to:lvaluevar::@return @@ -2048,7 +2048,7 @@ rvaluevar: scope:[rvaluevar] from main::@2 [14] phi() [ ] ( main:0::rvaluevar:4 [ ] ) to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 - [15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) + [15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [15] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [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 ] ) to:rvaluevar::@return @@ -2268,7 +2268,7 @@ lvaluevar: { .label i = 2 //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -2314,7 +2314,7 @@ 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/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -2542,7 +2542,7 @@ 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/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -2582,7 +2582,7 @@ 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/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -2730,7 +2730,7 @@ 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/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -2770,7 +2770,7 @@ 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/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -2925,7 +2925,7 @@ 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/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -2962,7 +2962,7 @@ 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/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -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/signed word) 1024 +(const byte[1024]) lvalue::SCREEN#0 SCREEN = ((byte*))(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 @@ -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/signed word) 1024 +(const byte[1024]) rvalue::SCREEN#0 SCREEN = ((byte*))(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,7 +3157,7 @@ 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/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 @@ -3194,7 +3194,7 @@ 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/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 + //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 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 58f0db683..37911c058 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/signed word) 1024 +(const byte[1024]) lvalue::SCREEN#0 SCREEN = ((byte*))(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 @@ -32,7 +32,7 @@ (label) rvalue::@2 (label) rvalue::@return (byte[1024]) rvalue::SCREEN -(const byte[1024]) rvalue::SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte[1024]) rvalue::SCREEN#0 SCREEN = ((byte*))(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.log b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log index 652d17580..4104831f4 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log @@ -51,7 +51,7 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[1024]) main::SCREEN ← (word/signed word) 1024 + (byte[1024]) main::SCREEN ← ((byte*)) (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 @@ -87,7 +87,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte[1024]) main::SCREEN ← (word/signed word) 1024 + (byte[1024]) main::SCREEN ← ((byte*)) (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 @@ -113,7 +113,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN ← (word/signed word) 1024 + (byte[1024]) main::SCREEN ← ((byte*)) (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 @@ -141,7 +141,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) main::SCREEN#0 ← ((byte*)) (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 @@ -171,7 +171,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) main::SCREEN#0 ← ((byte*)) (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 @@ -226,7 +226,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) main::SCREEN#0 ← ((byte*)) (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 @@ -258,7 +258,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) main::SCREEN#0 ← ((byte*)) (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 @@ -285,7 +285,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) main::SCREEN#0 ← ((byte*)) (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 @@ -312,7 +312,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) main::SCREEN#0 ← ((byte*)) (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 @@ -338,7 +338,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 + (byte[1024]) main::SCREEN#0 ← ((byte*)) (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 @@ -357,7 +357,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Constant (const byte[1024]) main::SCREEN#0 = 1024 +Constant (const byte[1024]) main::SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 2 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -417,7 +417,7 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return (byte[1024]) main::SCREEN -(const byte[1024]) main::SCREEN#0 = (word/signed word) 1024 +(const byte[1024]) main::SCREEN#0 = ((byte*))(word/signed word) 1024 (byte) main::b (byte) main::b#0 (byte) main::i @@ -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/signed word) 1024 +(const byte[1024]) main::SCREEN#0 SCREEN = ((byte*))(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/ptrtestmin.sym b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.sym index 4f4dec017..01967a768 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/signed word) 1024 +(const byte[1024]) main::SCREEN#0 SCREEN = ((byte*))(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.log b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.log index 5431cf7e4..e3e0b0217 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 @@ -58,8 +58,8 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) SCROLL ← (word) 53270 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL ← ((byte*)) (word) 53270 (byte[]) TEXT ← (string) "01234567@" to:@1 main: scope:[main] from @@ -95,8 +95,8 @@ main::@return: scope:[main] from main::@4 Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) SCROLL ← (word) 53270 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL ← ((byte*)) (word) 53270 (byte[]) TEXT ← (string) "01234567@" to:@1 main: scope:[main] from @@ -131,8 +131,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) SCROLL ← (word) 53270 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL ← ((byte*)) (word) 53270 (byte[]) TEXT ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -171,8 +171,8 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -223,8 +223,8 @@ main::@return: scope:[main] from main::@2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -322,8 +322,8 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -374,8 +374,8 @@ 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/signed word) 1024 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -431,8 +431,8 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#3 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -479,8 +479,8 @@ Alias (byte[]) TEXT#2 = (byte[]) TEXT#5 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -523,8 +523,8 @@ Self Phi Eliminated (byte[]) TEXT#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -565,8 +565,8 @@ Redundant Phi (byte[]) TEXT#2 (byte[]) TEXT#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -604,8 +604,8 @@ 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/signed word) 1024 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte[]) TEXT#0 ← (string) "01234567@" to:@1 main: scope:[main] from @1 @@ -638,8 +638,8 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 -Constant (const byte*) SCROLL#0 = 53270 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte*) SCROLL#0 = ((byte*))53270 Constant (const byte[]) TEXT#0 = "01234567@" Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification @@ -755,9 +755,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 = (word) 53270 +(const byte*) SCROLL#0 = ((byte*))(word) 53270 (byte[]) TEXT (const byte[]) TEXT#0 = (string) "01234567@" (void()) main() @@ -1439,9 +1439,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 SCROLL = (word) 53270 +(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270 (byte[]) TEXT (const byte[]) TEXT#0 TEXT = (string) "01234567@" (void()) main() diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym index f468be7e8..f5d99150b 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym @@ -2,9 +2,9 @@ (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 SCROLL = (word) 53270 +(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270 (byte[]) TEXT (const byte[]) TEXT#0 TEXT = (string) "01234567@" (void()) main() diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll.log b/src/main/java/dk/camelot64/kickc/test/ref/scroll.log index 04746b5e1..d26517804 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll.log @@ -149,10 +149,10 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) RASTER ← (word) 53266 - (byte*) BGCOL ← (word) 53280 - (byte*) SCROLL ← (word) 53270 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER ← ((byte*)) (word) 53266 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) SCROLL ← ((byte*)) (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 @@ -245,10 +245,10 @@ Removing empty block @1 Removing empty block fillscreen::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) RASTER ← (word) 53266 - (byte*) BGCOL ← (word) 53280 - (byte*) SCROLL ← (word) 53270 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER ← ((byte*)) (word) 53266 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) SCROLL ← ((byte*)) (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:@2 main: scope:[main] from @@ -331,10 +331,10 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) RASTER ← (word) 53266 - (byte*) BGCOL ← (word) 53280 - (byte*) SCROLL ← (word) 53270 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER ← ((byte*)) (word) 53266 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) SCROLL ← ((byte*)) (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:@2 main: scope:[main] from @2 @@ -431,10 +431,10 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -611,10 +611,10 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -950,10 +950,10 @@ Culled Empty Block (label) @3 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -1131,10 +1131,10 @@ Inversing boolean not (boolean~) main::$10 ← (byte) main::c#0 != (byte) '@' fr Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -1347,10 +1347,10 @@ Alias (byte) fillscreen::fill#0 = (byte) fillscreen::fill#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -1488,10 +1488,10 @@ Alias (byte*) TEXT#13 = (byte*) TEXT#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -1640,10 +1640,10 @@ Self Phi Eliminated (byte*) fillscreen::screen#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -1775,10 +1775,10 @@ Redundant Phi (byte*) fillscreen::screen#2 (byte*) fillscreen::cursor#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -1883,10 +1883,10 @@ Redundant Phi (byte*) TEXT#11 (byte*) TEXT#10 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -1987,10 +1987,10 @@ Simple Condition (boolean~) fillscreen::$1 if((byte*) fillscreen::cursor#1<(byte Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@2 main: scope:[main] from @2 @@ -2076,10 +2076,10 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 to:@end @end: scope:[] from @2 -Constant (const byte*) SCREEN#0 = 1024 -Constant (const byte*) RASTER#0 = 53266 -Constant (const byte*) BGCOL#0 = 53280 -Constant (const byte*) SCROLL#0 = 53270 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) BGCOL#0 = ((byte*))53280 +Constant (const byte*) SCROLL#0 = ((byte*))53270 Constant (const byte*) TEXT#0 = "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" Constant (const byte) fillscreen::fill#0 = 32 Constant (const byte) main::scroll#0 = 7 @@ -2872,13 +2872,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 = (word) 53280 +(const byte*) BGCOL#0 = ((byte*))(word) 53280 (byte*) RASTER -(const byte*) RASTER#0 = (word) 53266 +(const byte*) RASTER#0 = ((byte*))(word) 53266 (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 = (word) 53270 +(const byte*) SCROLL#0 = ((byte*))(word) 53270 (byte*) TEXT (const byte*) TEXT#0 = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) @@ -4684,13 +4684,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (word) 53280 +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280 (byte*) RASTER -(const byte*) RASTER#0 RASTER = (word) 53266 +(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 SCROLL = (word) 53270 +(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270 (byte*) TEXT (const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) 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 f539731c1..fcfa8202c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 BGCOL = (word) 53280 +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280 (byte*) RASTER -(const byte*) RASTER#0 RASTER = (word) 53266 +(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 SCROLL = (word) 53270 +(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270 (byte*) TEXT (const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) 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 52066a9ca..19fd40691 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg @@ -55,95 +55,96 @@ 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/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 ] ) + [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) + [23] (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 ] ) + [24] (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 ] ) + [25] (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/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 ] ) + [26] (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 ] ) + [26] (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 ] ) + [26] (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 ] ) + [27] 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/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 ] ) + [29] *((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/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/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 ] ) + [30] (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 ] ) + [30] (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 ] ) + [31] (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 ] ) + [32] (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 ] ) + [33] 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/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/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/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 ] ) + [34] (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 ] ) + [35] *((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 ] ) + [36] (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 ] ) + [37] (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 ] ) + [38] 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/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 ] ) + [39] *((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 - [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [41] return [ 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:@return 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 ] ) + [42] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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/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/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/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/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/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/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/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/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 ] ) + [43] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [44] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) + [45] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [46] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) + [47] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [48] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) + [49] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [50] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) + [51] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [52] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) + [53] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [54] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) + [55] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [56] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) + [57] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [58] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) + [59] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) + [61] 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:27 [ 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 ] ) + [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:@return next_char: scope:[next_char] from scroll_bit::@4 - [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 ] ) - [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) + [63] (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 ] ) + [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) to:next_char::@2 next_char::@2: scope:[next_char] from next_char - [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) + [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) to:next_char::@1 next_char::@1: scope:[next_char] from next_char next_char::@2 - [65] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) - [65] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) - [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + [66] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) + [66] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) + [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) to:next_char::@return next_char::@return: scope:[next_char] from next_char::@1 - [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) to:@return fillscreen: scope:[fillscreen] from main - [68] phi() [ ] ( main:0::fillscreen:2 [ ] ) + [69] phi() [ ] ( main:0::fillscreen:2 [ ] ) to:fillscreen::@1 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/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [70] (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 ] ) + [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) + [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [73] 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 [ ] ) + [74] return [ ] ( main:0::fillscreen:2 [ ] ) to:@return 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 9318d2e2c..78e0802d1 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log @@ -387,12 +387,12 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) RASTER ← (word) 53266 - (byte*) BGCOL ← (word) 53280 - (byte*) SCROLL ← (word) 53270 + (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN ← ((byte*)) (word) 53248 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER ← ((byte*)) (word) 53266 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) SCROLL ← ((byte*)) (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 @@ -462,7 +462,7 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@4 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::c ← ((word)) (byte~) scroll_bit::$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 @@ -613,12 +613,12 @@ Removing empty block @5 Removing empty block fillscreen::@2 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) RASTER ← (word) 53266 - (byte*) BGCOL ← (word) 53280 - (byte*) SCROLL ← (word) 53270 + (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN ← ((byte*)) (word) 53248 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER ← ((byte*)) (word) 53266 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) SCROLL ← ((byte*)) (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 @@ -684,7 +684,7 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@4 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::c ← ((word)) (byte~) scroll_bit::$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 @@ -832,12 +832,12 @@ next_char modifies nxt CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN ← (word) 53248 - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) RASTER ← (word) 53266 - (byte*) BGCOL ← (word) 53280 - (byte*) SCROLL ← (word) 53270 + (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN ← ((byte*)) (word) 53248 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER ← ((byte*)) (word) 53266 + (byte*) BGCOL ← ((byte*)) (word) 53280 + (byte*) SCROLL ← ((byte*)) (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 @6 @@ -932,7 +932,7 @@ scroll_bit::@4: scope:[scroll_bit] from scroll_bit 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::c ← ((word)) (byte~) scroll_bit::$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 @@ -1090,12 +1090,12 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (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 @6 @@ -1344,7 +1344,7 @@ scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (byte) next_char::return#3 ← phi( scroll_bit::@4/(byte) next_char::return#0 ) (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::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -1561,12 +1561,12 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (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 @6 @@ -1816,7 +1816,7 @@ scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (byte) next_char::return#3 ← phi( scroll_bit::@4/(byte) next_char::return#0 ) (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::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -2462,12 +2462,12 @@ Inversing boolean not (boolean~) next_char::$1 ← (byte) next_char::c#0 != (byt Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (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 @6 @@ -2715,7 +2715,7 @@ scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (byte) next_char::return#3 ← phi( scroll_bit::@4/(byte) next_char::return#0 ) (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::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -2975,7 +2975,6 @@ Alias (byte*) nxt#36 = (byte*) nxt#38 Alias (byte*) scroll_bit::sc#0 = (byte*~) scroll_bit::$8 Alias (byte) next_char::c#2 = (byte) next_char::return#0 (byte) next_char::return#2 (byte) next_char::return#3 (byte) next_char::return#1 (byte) next_char::return#4 Alias (byte*) nxt#15 = (byte*) nxt#9 (byte*) nxt#4 (byte*) nxt#19 (byte*) nxt#7 -Alias (word) scroll_bit::c#0 = (byte~) scroll_bit::$3 Alias (byte) scroll_bit::bits#0 = (byte~) scroll_bit::$9 Alias (byte*) scroll_bit::sc#1 = (byte*~) scroll_bit::$14 Alias (byte*) scroll_bit::sc#3 = (byte*) scroll_bit::sc#4 @@ -2999,12 +2998,12 @@ Alias (byte) fillscreen::fill#0 = (byte) fillscreen::fill#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (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 @6 @@ -3116,7 +3115,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -3266,7 +3266,7 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 Not aliassing across scopes: fillscreen::cursor#0 SCREEN#0 Not aliassing across scopes: current_bit#5 scroll_bit::$0 -Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 +Not aliassing across scopes: scroll_bit::$3 next_char::c#2 Not aliassing across scopes: current_chargen#5 scroll_bit::$5 Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#13 (byte*) CHARGEN#15 (byte*) CHARGEN#1 (byte*) CHARGEN#16 Alias (byte*) TEXT#0 = (byte*) TEXT#15 (byte*) TEXT#17 (byte*) TEXT#1 @@ -3282,12 +3282,12 @@ Alias (byte*) nxt#13 = (byte*) nxt#32 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (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 @6 @@ -3390,7 +3390,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -3529,7 +3530,7 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 Not aliassing across scopes: fillscreen::cursor#0 SCREEN#0 Not aliassing across scopes: current_bit#5 scroll_bit::$0 -Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 +Not aliassing across scopes: scroll_bit::$3 next_char::c#2 Not aliassing across scopes: current_chargen#5 scroll_bit::$5 Not aliassing identity: current_chargen#10 current_chargen#10 Not aliassing identity: current_bit#11 current_bit#11 @@ -3574,12 +3575,12 @@ Self Phi Eliminated (byte*) fillscreen::screen#2 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (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 @6 @@ -3682,7 +3683,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -3847,12 +3849,12 @@ Redundant Phi (byte*) fillscreen::screen#2 (byte*) fillscreen::cursor#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (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 @6 @@ -3944,7 +3946,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -4079,12 +4082,12 @@ Simple Condition (boolean~) fillscreen::$1 if((byte*) fillscreen::cursor#1<(byte Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 - (byte*) CHARGEN#0 ← (word) 53248 - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) RASTER#0 ← (word) 53266 - (byte*) BGCOL#0 ← (word) 53280 - (byte*) SCROLL#0 ← (word) 53270 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1 + (byte*) CHARGEN#0 ← ((byte*)) (word) 53248 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) RASTER#0 ← ((byte*)) (word) 53266 + (byte*) BGCOL#0 ← ((byte*)) (word) 53280 + (byte*) SCROLL#0 ← ((byte*)) (word) 53270 (byte*) TEXT#0 ← (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 @6 @@ -4172,7 +4175,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -4290,12 +4294,12 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 to:@end @end: scope:[] from @7 -Constant (const byte*) PROCPORT#0 = 1 -Constant (const byte*) CHARGEN#0 = 53248 -Constant (const byte*) SCREEN#0 = 1024 -Constant (const byte*) RASTER#0 = 53266 -Constant (const byte*) BGCOL#0 = 53280 -Constant (const byte*) SCROLL#0 = 53270 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) BGCOL#0 = ((byte*))53280 +Constant (const byte*) SCROLL#0 = ((byte*))53270 Constant (const byte*) TEXT#0 = "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" Constant (const byte) fillscreen::fill#0 = 32 Constant (const byte) scroll#15 = 7 @@ -4398,7 +4402,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -4588,7 +4593,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -4778,7 +4784,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -4984,7 +4991,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -5186,7 +5194,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -5297,7 +5306,7 @@ Not aliassing identity: CHARGEN#10 CHARGEN#10 Not aliassing identity: TEXT#12 TEXT#12 Not aliassing across scopes: current_bit#5 scroll_bit::$0 Not aliassing across scopes: scroll_bit::$7 SCREEN#16 -Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 +Not aliassing across scopes: scroll_bit::$3 next_char::c#2 Not aliassing across scopes: current_chargen#5 scroll_bit::$5 Self Phi Eliminated (byte*) RASTER#1 Self Phi Eliminated (byte*) BGCOL#4 @@ -5379,7 +5388,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -5553,7 +5563,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -5728,7 +5739,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -5886,7 +5898,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -6067,7 +6080,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -6170,7 +6184,7 @@ Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i# Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Not culling empty block because it shares successor with its predecessor. (label) scroll_bit::@5 Not aliassing across scopes: current_bit#5 scroll_bit::$0 -Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 +Not aliassing across scopes: scroll_bit::$3 next_char::c#2 Not aliassing across scopes: current_chargen#5 scroll_bit::$5 Alias (byte) scroll_hard::i#2 = (byte~) scroll_hard::$16 (byte~) scroll_hard::$18 (byte~) scroll_hard::$20 (byte~) scroll_hard::$22 (byte~) scroll_hard::$24 (byte~) scroll_hard::$26 (byte~) scroll_hard::$28 (byte~) scroll_hard::$30 Succesful SSA optimization Pass2AliasElimination @@ -6237,7 +6251,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -6323,7 +6338,7 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 @end: scope:[] from @6 Not aliassing across scopes: current_bit#5 scroll_bit::$0 -Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 +Not aliassing across scopes: scroll_bit::$3 next_char::c#2 Not aliassing across scopes: current_chargen#5 scroll_bit::$5 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 @@ -6343,7 +6358,7 @@ Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i# Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Not culling empty block because it shares successor with its predecessor. (label) scroll_bit::@5 Not aliassing across scopes: current_bit#5 scroll_bit::$0 -Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 +Not aliassing across scopes: scroll_bit::$3 next_char::c#2 Not aliassing across scopes: current_chargen#5 scroll_bit::$5 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 @@ -6473,7 +6488,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -6563,17 +6579,17 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) BGCOL -(const byte*) BGCOL#0 = (word) 53280 +(const byte*) BGCOL#0 = ((byte*))(word) 53280 (byte*) CHARGEN -(const byte*) CHARGEN#0 = (word) 53248 +(const byte*) CHARGEN#0 = ((byte*))(word) 53248 (byte*) PROCPORT -(const byte*) PROCPORT#0 = (byte/signed byte/word/signed word) 1 +(const byte*) PROCPORT#0 = ((byte*))(byte/signed byte/word/signed word) 1 (byte*) RASTER -(const byte*) RASTER#0 = (word) 53266 +(const byte*) RASTER#0 = ((byte*))(word) 53266 (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte*) SCROLL -(const byte*) SCROLL#0 = (word) 53270 +(const byte*) SCROLL#0 = ((byte*))(word) 53270 (byte*) TEXT (const byte*) TEXT#0 = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte) current_bit @@ -6623,6 +6639,7 @@ FINAL SYMBOL TABLE (void()) scroll_bit() (byte~) scroll_bit::$0 (byte~) scroll_bit::$10 +(byte~) scroll_bit::$3 (word~) scroll_bit::$4 (byte*~) scroll_bit::$5 (label) scroll_bit::@1 @@ -6762,7 +6779,8 @@ 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 + (byte~) scroll_bit::$3 ← (byte) next_char::c#2 + (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$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 @@ -6882,7 +6900,7 @@ CALL GRAPH Calls in [] to main:0 Calls in [main] to fillscreen:2 scroll_soft:7 Calls in [scroll_soft] to scroll_bit:17 -Calls in [scroll_bit] to next_char:31 scroll_hard:39 +Calls in [scroll_bit] to next_char:31 scroll_hard:40 Propagating live ranges... Propagating live ranges... @@ -6975,119 +6993,120 @@ 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/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 ] - [37] (byte*~) nxt#43 ← (byte*) nxt#15 [ current_chargen#36 nxt#43 ] + [32] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] + [33] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] + [34] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] + [35] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] + [36] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] + [37] (byte*~) current_chargen#36 ← (byte*) current_chargen#5 [ current_chargen#36 nxt#15 ] + [38] (byte*~) nxt#43 ← (byte*) nxt#15 [ current_chargen#36 nxt#43 ] 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/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 ] + [39] (byte*) nxt#36 ← phi( scroll_bit::@9/(byte*~) nxt#42 scroll_bit::@8/(byte*~) nxt#43 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [39] (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 ] + [39] (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 ] + [40] 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/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] + [42] *((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/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/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 ] + [43] (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 ] + [43] (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 ] + [44] (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 ] + [45] (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 ] + [46] 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/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/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/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 ] + [47] (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 ] + [48] *((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 ] + [49] (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 ] + [50] (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 ] + [51] 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/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] + [52] *((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 - [53] return [ current_bit#21 nxt#36 current_chargen#19 ] + [54] return [ current_bit#21 nxt#36 current_chargen#19 ] to:@return scroll_bit::@10: scope:[scroll_bit] from scroll_bit::@3 - [54] (byte~) scroll_bit::r#5 ← (byte) scroll_bit::r#1 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#5 scroll_bit::sc#1 ] - [55] (byte*~) scroll_bit::sc#5 ← (byte*) scroll_bit::sc#1 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#5 scroll_bit::sc#5 ] + [55] (byte~) scroll_bit::r#5 ← (byte) scroll_bit::r#1 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#5 scroll_bit::sc#1 ] + [56] (byte*~) scroll_bit::sc#5 ← (byte*) scroll_bit::sc#1 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#5 scroll_bit::sc#5 ] to:scroll_bit::@2 scroll_bit::@9: scope:[scroll_bit] from scroll_bit - [56] (byte*~) current_chargen#35 ← (byte*) current_chargen#27 [ nxt#31 current_bit#5 current_chargen#35 ] - [57] (byte~) current_bit#36 ← (byte) current_bit#5 [ nxt#31 current_chargen#35 current_bit#36 ] - [58] (byte*~) nxt#42 ← (byte*) nxt#31 [ current_chargen#35 current_bit#36 nxt#42 ] + [57] (byte*~) current_chargen#35 ← (byte*) current_chargen#27 [ nxt#31 current_bit#5 current_chargen#35 ] + [58] (byte~) current_bit#36 ← (byte) current_bit#5 [ nxt#31 current_chargen#35 current_bit#36 ] + [59] (byte*~) nxt#42 ← (byte*) nxt#31 [ current_chargen#35 current_bit#36 nxt#42 ] to:scroll_bit::@1 scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - [59] phi() [ ] + [60] 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/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/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/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/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/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/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/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/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/signed byte/word/signed word) 39) goto scroll_hard::@3 [ scroll_hard::i#1 ] + [61] (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 ] + [62] (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 ] + [63] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] + [64] (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 ] + [65] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] + [66] (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 ] + [67] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] + [68] (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 ] + [69] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] + [70] (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 ] + [71] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] + [72] (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 ] + [73] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] + [74] (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 ] + [75] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] + [76] (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 ] + [77] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] + [78] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] + [79] 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 [ ] + [80] return [ ] to:@return scroll_hard::@3: scope:[scroll_hard] from scroll_hard::@1 - [80] (byte~) scroll_hard::i#3 ← (byte) scroll_hard::i#1 [ scroll_hard::i#3 ] + [81] (byte~) scroll_hard::i#3 ← (byte) scroll_hard::i#1 [ scroll_hard::i#3 ] to:scroll_hard::@1 next_char: scope:[next_char] from scroll_bit::@4 - [81] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] - [82] if((byte) next_char::c#0!=(byte) '@') goto next_char::@4 [ nxt#31 next_char::c#0 ] + [82] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] + [83] if((byte) next_char::c#0!=(byte) '@') goto next_char::@4 [ nxt#31 next_char::c#0 ] to:next_char::@2 next_char::@2: scope:[next_char] from next_char - [83] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] - [84] (byte~) next_char::c#4 ← (byte) next_char::c#1 [ next_char::c#4 ] + [84] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] + [85] (byte~) next_char::c#4 ← (byte) next_char::c#1 [ next_char::c#4 ] to:next_char::@1 next_char::@1: scope:[next_char] from next_char::@2 next_char::@4 - [85] (byte) next_char::c#2 ← phi( next_char::@4/(byte~) next_char::c#3 next_char::@2/(byte~) next_char::c#4 ) [ next_char::c#2 nxt#18 ] - [85] (byte*) nxt#18 ← phi( next_char::@4/(byte*~) nxt#44 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] - [86] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] + [86] (byte) next_char::c#2 ← phi( next_char::@4/(byte~) next_char::c#3 next_char::@2/(byte~) next_char::c#4 ) [ next_char::c#2 nxt#18 ] + [86] (byte*) nxt#18 ← phi( next_char::@4/(byte*~) nxt#44 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] + [87] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] to:next_char::@return next_char::@return: scope:[next_char] from next_char::@1 - [87] return [ next_char::c#2 nxt#15 ] + [88] return [ next_char::c#2 nxt#15 ] to:@return next_char::@4: scope:[next_char] from next_char - [88] (byte*~) nxt#44 ← (byte*) nxt#31 [ next_char::c#0 nxt#44 ] - [89] (byte~) next_char::c#3 ← (byte) next_char::c#0 [ nxt#44 next_char::c#3 ] + [89] (byte*~) nxt#44 ← (byte*) nxt#31 [ next_char::c#0 nxt#44 ] + [90] (byte~) next_char::c#3 ← (byte) next_char::c#0 [ nxt#44 next_char::c#3 ] to:next_char::@1 fillscreen: scope:[fillscreen] from main - [90] phi() [ ] + [91] phi() [ ] to:fillscreen::@1 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/signed word) 1000) goto fillscreen::@3 [ fillscreen::cursor#1 ] + [92] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@3/(byte*~) fillscreen::cursor#3 ) [ fillscreen::cursor#2 ] + [93] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] + [94] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] + [95] 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 [ ] + [96] return [ ] to:@return fillscreen::@3: scope:[fillscreen] from fillscreen::@1 - [96] (byte*~) fillscreen::cursor#3 ← (byte*) fillscreen::cursor#1 [ fillscreen::cursor#3 ] + [97] (byte*~) fillscreen::cursor#3 ← (byte*) fillscreen::cursor#1 [ fillscreen::cursor#3 ] to:fillscreen::@1 Created 18 initial phi equivalence classes @@ -7102,18 +7121,18 @@ Coalesced [24] scroll#24 ← scroll#3 Coalesced (already) [25] current_bit#34 ← current_bit#29 Coalesced (already) [26] nxt#40 ← nxt#31 Coalesced (already) [27] current_chargen#33 ← current_chargen#27 -Coalesced [36] current_chargen#36 ← current_chargen#5 -Coalesced [37] nxt#43 ← nxt#15 -Coalesced [54] scroll_bit::r#5 ← scroll_bit::r#1 -Coalesced [55] scroll_bit::sc#5 ← scroll_bit::sc#1 -Coalesced (already) [56] current_chargen#35 ← current_chargen#27 -Coalesced [57] current_bit#36 ← current_bit#5 -Coalesced (already) [58] nxt#42 ← nxt#31 -Coalesced [80] scroll_hard::i#3 ← scroll_hard::i#1 -Coalesced [84] next_char::c#4 ← next_char::c#1 -Coalesced [88] nxt#44 ← nxt#31 -Coalesced [89] next_char::c#3 ← next_char::c#0 -Coalesced [96] fillscreen::cursor#3 ← fillscreen::cursor#1 +Coalesced [37] current_chargen#36 ← current_chargen#5 +Coalesced [38] nxt#43 ← nxt#15 +Coalesced [55] scroll_bit::r#5 ← scroll_bit::r#1 +Coalesced [56] scroll_bit::sc#5 ← scroll_bit::sc#1 +Coalesced (already) [57] current_chargen#35 ← current_chargen#27 +Coalesced [58] current_bit#36 ← current_bit#5 +Coalesced (already) [59] nxt#42 ← nxt#31 +Coalesced [81] scroll_hard::i#3 ← scroll_hard::i#1 +Coalesced [85] next_char::c#4 ← next_char::c#1 +Coalesced [89] nxt#44 ← nxt#31 +Coalesced [90] next_char::c#3 ← next_char::c#0 +Coalesced [97] fillscreen::cursor#3 ← fillscreen::cursor#1 Coalesced down to 10 phi equivalence classes Culled Empty Block (label) main::@9 Culled Empty Block (label) scroll_soft::@4 @@ -7202,97 +7221,98 @@ 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/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 ] + [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] + [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] + [23] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] + [24] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] + [25] (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/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 ] + [26] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [26] (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 ] + [26] (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 ] + [27] 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/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] + [29] *((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/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/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 ] + [30] (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 ] + [30] (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 ] + [31] (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 ] + [32] (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 ] + [33] 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/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/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/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 ] + [34] (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 ] + [35] *((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 ] + [36] (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 ] + [37] (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 ] + [38] 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/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] + [39] *((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 - [40] return [ current_bit#21 nxt#36 current_chargen#19 ] + [41] return [ current_bit#21 nxt#36 current_chargen#19 ] to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - [41] phi() [ ] + [42] 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/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/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/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/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/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/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/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/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/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] + [43] (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 ] + [44] (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 ] + [45] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] + [46] (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 ] + [47] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] + [48] (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 ] + [49] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] + [50] (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 ] + [51] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] + [52] (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 ] + [53] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] + [54] (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 ] + [55] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] + [56] (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 ] + [57] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] + [58] (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 ] + [59] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] + [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] + [61] 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 [ ] + [62] return [ ] to:@return next_char: scope:[next_char] from scroll_bit::@4 - [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] - [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] + [63] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] + [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] to:next_char::@2 next_char::@2: scope:[next_char] from next_char - [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] + [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] to:next_char::@1 next_char::@1: scope:[next_char] from next_char next_char::@2 - [65] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] - [65] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] - [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] + [66] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] + [66] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] + [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] to:next_char::@return next_char::@return: scope:[next_char] from next_char::@1 - [67] return [ next_char::c#2 nxt#15 ] + [68] return [ next_char::c#2 nxt#15 ] to:@return fillscreen: scope:[fillscreen] from main - [68] phi() [ ] + [69] phi() [ ] to:fillscreen::@1 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/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] + [70] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] + [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] + [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] + [73] 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 [ ] + [74] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -7353,97 +7373,98 @@ 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/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 ] ) + [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) + [23] (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 ] ) + [24] (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 ] ) + [25] (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/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 ] ) + [26] (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 ] ) + [26] (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 ] ) + [26] (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 ] ) + [27] 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/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 ] ) + [29] *((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/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/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 ] ) + [30] (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 ] ) + [30] (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 ] ) + [31] (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 ] ) + [32] (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 ] ) + [33] 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/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/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/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 ] ) + [34] (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 ] ) + [35] *((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 ] ) + [36] (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 ] ) + [37] (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 ] ) + [38] 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/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 ] ) + [39] *((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 - [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [41] return [ 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:@return 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 ] ) + [42] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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/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/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/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/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/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/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/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/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 ] ) + [43] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [44] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) + [45] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [46] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) + [47] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [48] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) + [49] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [50] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) + [51] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [52] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) + [53] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [54] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) + [55] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [56] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) + [57] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [58] (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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) + [59] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) + [61] 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:27 [ 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 ] ) + [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:@return next_char: scope:[next_char] from scroll_bit::@4 - [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 ] ) - [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) + [63] (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 ] ) + [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) to:next_char::@2 next_char::@2: scope:[next_char] from next_char - [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) + [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) to:next_char::@1 next_char::@1: scope:[next_char] from next_char next_char::@2 - [65] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) - [65] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) - [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + [66] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) + [66] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) + [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) to:next_char::@return next_char::@return: scope:[next_char] from next_char::@1 - [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) to:@return fillscreen: scope:[fillscreen] from main - [68] phi() [ ] ( main:0::fillscreen:2 [ ] ) + [69] phi() [ ] ( main:0::fillscreen:2 [ ] ) to:fillscreen::@1 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/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [70] (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 ] ) + [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) + [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [73] 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 [ ] ) + [74] return [ ] ( main:0::fillscreen:2 [ ] ) to:@return DOMINATORS @@ -7556,7 +7577,7 @@ VARIABLE REGISTER WEIGHTS (byte) next_char::return (byte*) nxt (byte*) nxt#0 2.5 -(byte*) nxt#15 0.5714285714285714 +(byte*) nxt#15 0.5 (byte*) nxt#18 4.0 (byte*) nxt#31 1.5454545454545456 (byte*) nxt#36 0.3529411764705882 @@ -7567,6 +7588,7 @@ VARIABLE REGISTER WEIGHTS (void()) scroll_bit() (byte~) scroll_bit::$0 4.0 (byte~) scroll_bit::$10 22.0 +(byte~) scroll_bit::$3 4.0 (word~) scroll_bit::$4 4.0 (byte*~) scroll_bit::$5 4.0 (byte) scroll_bit::b @@ -7615,6 +7637,7 @@ Initial phi equivalence classes [ next_char::c#2 next_char::c#0 next_char::c#1 ] [ fillscreen::cursor#2 fillscreen::cursor#1 ] Added variable scroll_bit::$0 to zero page equivalence class [ scroll_bit::$0 ] +Added variable scroll_bit::$3 to zero page equivalence class [ scroll_bit::$3 ] Added variable scroll_bit::c#0 to zero page equivalence class [ scroll_bit::c#0 ] Added variable scroll_bit::$4 to zero page equivalence class [ scroll_bit::$4 ] Added variable scroll_bit::$5 to zero page equivalence class [ scroll_bit::$5 ] @@ -7640,6 +7663,7 @@ Complete equivalence classes [ next_char::c#2 next_char::c#0 next_char::c#1 ] [ fillscreen::cursor#2 fillscreen::cursor#1 ] [ scroll_bit::$0 ] +[ scroll_bit::$3 ] [ scroll_bit::c#0 ] [ scroll_bit::$4 ] [ scroll_bit::$5 ] @@ -7664,19 +7688,20 @@ Allocated zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] Allocated zp ZP_BYTE:13 [ next_char::c#2 next_char::c#0 next_char::c#1 ] Allocated zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Allocated zp ZP_BYTE:16 [ scroll_bit::$0 ] -Allocated zp ZP_WORD:17 [ scroll_bit::c#0 ] -Allocated zp ZP_WORD:19 [ scroll_bit::$4 ] -Allocated zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] -Allocated zp ZP_BYTE:23 [ scroll_bit::bits#0 ] -Allocated zp ZP_BYTE:24 [ scroll_bit::$10 ] -Allocated zp ZP_BYTE:25 [ scroll_hard::$17 ] -Allocated zp ZP_BYTE:26 [ scroll_hard::$19 ] -Allocated zp ZP_BYTE:27 [ scroll_hard::$21 ] -Allocated zp ZP_BYTE:28 [ scroll_hard::$23 ] -Allocated zp ZP_BYTE:29 [ scroll_hard::$25 ] -Allocated zp ZP_BYTE:30 [ scroll_hard::$27 ] -Allocated zp ZP_BYTE:31 [ scroll_hard::$29 ] -Allocated zp ZP_BYTE:32 [ scroll_hard::$31 ] +Allocated zp ZP_BYTE:17 [ scroll_bit::$3 ] +Allocated zp ZP_WORD:18 [ scroll_bit::c#0 ] +Allocated zp ZP_WORD:20 [ scroll_bit::$4 ] +Allocated zp ZP_PTR_BYTE:22 [ scroll_bit::$5 ] +Allocated zp ZP_BYTE:24 [ scroll_bit::bits#0 ] +Allocated zp ZP_BYTE:25 [ scroll_bit::$10 ] +Allocated zp ZP_BYTE:26 [ scroll_hard::$17 ] +Allocated zp ZP_BYTE:27 [ scroll_hard::$19 ] +Allocated zp ZP_BYTE:28 [ scroll_hard::$21 ] +Allocated zp ZP_BYTE:29 [ scroll_hard::$23 ] +Allocated zp ZP_BYTE:30 [ scroll_hard::$25 ] +Allocated zp ZP_BYTE:31 [ scroll_hard::$27 ] +Allocated zp ZP_BYTE:32 [ scroll_hard::$29 ] +Allocated zp ZP_BYTE:33 [ scroll_hard::$31 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -7709,7 +7734,7 @@ bend: //SEG7 main main: { //SEG8 [2] call fillscreen param-assignment [ ] ( main:0 [ ] ) - //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] + //SEG9 [69] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] @@ -7817,11 +7842,12 @@ scroll_soft: { //SEG52 scroll_bit scroll_bit: { .label _0 = $10 - .label _4 = $13 - .label _5 = $15 - .label _10 = $18 - .label c = $11 - .label bits = $17 + .label _3 = $11 + .label _4 = $14 + .label _5 = $16 + .label _10 = $19 + .label c = $12 + .label bits = $18 .label sc = 7 .label r = 6 .label b = 9 @@ -7843,12 +7869,15 @@ scroll_bit: { jmp b8 //SEG58 scroll_bit::@8 b8: - //SEG59 [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 ] ) -- zpwo1=zpby1 + //SEG59 [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) -- zpby1=zpby2 lda next_char.c + sta _3 + //SEG60 [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=_word_zpby1 + lda _3 sta c lda #0 sta c+1 - //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 + //SEG61 [23] (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 @@ -7867,7 +7896,7 @@ scroll_bit: { lda _4+1 rol sta c+1 - //SEG61 [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 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG62 [24] (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 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN adc _4+1 sta _5+1 - //SEG62 [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 ] ) -- zpptrby1=zpptrby2 + //SEG63 [25] (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 ] ) -- zpptrby1=zpptrby2 lda _5 sta current_chargen lda _5+1 sta current_chargen+1 - //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG64 [26] 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/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [26] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG66 [26] 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 + //SEG67 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG68 [26] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] b1_from_scroll_bit: - //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG69 [26] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG70 [26] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG71 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG71 scroll_bit::@1 + //SEG72 scroll_bit::@1 b1: - //SEG72 [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 ] ) - //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG73 [27] 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 ] ) + //SEG74 [42] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] scroll_hard_from_b1: jsr scroll_hard jmp b7 - //SEG74 scroll_bit::@7 + //SEG75 scroll_bit::@7 b7: - //SEG75 asm { sei } + //SEG76 asm { sei } sei - //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 + //SEG77 [29] *((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 [30] 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/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG79 [30] 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/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- zpby1=coby1 + //SEG80 [30] 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 - //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG81 [30] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] b2_from_b3: - //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG82 [30] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG83 [30] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy jmp b2 - //SEG83 scroll_bit::@2 + //SEG84 scroll_bit::@2 b2: - //SEG84 [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 ] ) -- zpby1=zpptrby1_derefidx_zpby2 + //SEG85 [31] (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 ] ) -- zpby1=zpptrby1_derefidx_zpby2 ldy r lda (current_chargen),y sta bits - //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 ] ) -- zpby1=zpby2_band_zpby3 + //SEG86 [32] (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 ] ) -- zpby1=zpby2_band_zpby3 lda bits and current_bit sta _10 - //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 + //SEG87 [33] 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 - //SEG87 scroll_bit::@5 + //SEG88 scroll_bit::@5 b5: - //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG89 [34] 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/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- zpby1=coby1 + //SEG90 [34] 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 - //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG91 [34] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- zpby1=coby1 + //SEG92 [34] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- zpby1=coby1 lda #' ' sta b jmp b3 - //SEG92 scroll_bit::@3 + //SEG93 scroll_bit::@3 b3: - //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=zpby1 + //SEG94 [35] *((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=zpby1 ldy #0 lda b sta (sc),y - //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 + //SEG95 [36] (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 @@ -7966,27 +7995,27 @@ scroll_bit: { bcc !+ inc sc+1 !: - //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 + //SEG96 [37] (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/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 + //SEG97 [38] 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 + //SEG98 scroll_bit::@6 b6: - //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 + //SEG99 [39] *((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 } + //SEG100 asm { cli } cli jmp breturn - //SEG100 scroll_bit::@return + //SEG101 scroll_bit::@return breturn: - //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG102 [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG102 scroll_hard +//SEG103 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -7996,175 +8025,175 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - .label _17 = $19 - .label _19 = $1a - .label _21 = $1b - .label _23 = $1c - .label _25 = $1d - .label _27 = $1e - .label _29 = $1f - .label _31 = $20 + .label _17 = $1a + .label _19 = $1b + .label _21 = $1c + .label _23 = $1d + .label _25 = $1e + .label _27 = $1f + .label _29 = $20 + .label _31 = $21 .label i = $a - //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG104 [43] 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/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- zpby1=coby1 + //SEG105 [43] 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 - //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG106 [43] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] b1_from_b1: - //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG107 [43] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy jmp b1 - //SEG107 scroll_hard::@1 + //SEG108 scroll_hard::@1 b1: - //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 + //SEG109 [44] (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:27 [ 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 - //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_zpby1=zpby2 + //SEG110 [45] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _17 ldx i sta line0,x - //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 + //SEG111 [46] (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:27 [ 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 - //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_zpby1=zpby2 + //SEG112 [47] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _19 ldx i sta line1,x - //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 + //SEG113 [48] (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:27 [ 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 - //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_zpby1=zpby2 + //SEG114 [49] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _21 ldx i sta line2,x - //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 + //SEG115 [50] (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:27 [ 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 - //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_zpby1=zpby2 + //SEG116 [51] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _23 ldx i sta line3,x - //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 + //SEG117 [52] (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:27 [ 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 - //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_zpby1=zpby2 + //SEG118 [53] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _25 ldx i sta line4,x - //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 + //SEG119 [54] (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:27 [ 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 - //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_zpby1=zpby2 + //SEG120 [55] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _27 ldx i sta line5,x - //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 + //SEG121 [56] (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:27 [ 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 - //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_zpby1=zpby2 + //SEG122 [57] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _29 ldx i sta line6,x - //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 + //SEG123 [58] (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:27 [ 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 - //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_zpby1=zpby2 + //SEG124 [59] *((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:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _31 ldx i 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 + //SEG125 [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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 + //SEG126 [61] 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:27 [ 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 jmp breturn - //SEG126 scroll_hard::@return + //SEG127 scroll_hard::@return breturn: - //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG128 [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG128 next_char +//SEG129 next_char next_char: { .label c = $d - //SEG129 [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 ] ) -- zpby1=_deref_zpptrby1 + //SEG130 [63] (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 ] ) -- zpby1=_deref_zpptrby1 ldy #0 lda (nxt),y sta c - //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- zpby1_neq_coby1_then_la1 + //SEG131 [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- zpby1_neq_coby1_then_la1 lda c cmp #'@' bne b1_from_next_char jmp b2 - //SEG131 next_char::@2 + //SEG132 next_char::@2 b2: - //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- zpby1=_deref_cowo1 + //SEG133 [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- zpby1=_deref_cowo1 lda TEXT sta c - //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG134 [66] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: - //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + //SEG135 [66] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG136 [66] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 jmp b1 - //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG137 [66] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] b1_from_next_char: - //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG138 [66] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG139 [66] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy jmp b1 - //SEG139 next_char::@1 + //SEG140 next_char::@1 b1: - //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG141 [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: jmp breturn - //SEG141 next_char::@return + //SEG142 next_char::@return breturn: - //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + //SEG143 [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) rts } -//SEG143 fillscreen +//SEG144 fillscreen fillscreen: { .const fill = $20 .label cursor = $e - //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG145 [70] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG146 [70] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG147 [70] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG148 [70] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG148 fillscreen::@1 + //SEG149 fillscreen::@1 b1: - //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG150 [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG151 [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //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 + //SEG152 [73] 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 @@ -8174,9 +8203,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG152 fillscreen::@return + //SEG153 fillscreen::@return breturn: - //SEG153 [73] return [ ] ( main:0::fillscreen:2 [ ] ) + //SEG154 [74] return [ ] ( main:0::fillscreen:2 [ ] ) rts } @@ -8186,36 +8215,38 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ sc 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/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/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 +Statement [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) always clobbers reg byte a +Statement [23] (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 [24] (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 [25] (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 [29] *((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 [31] (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 +Statement [32] (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 [35] *((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/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/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [36] (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 [39] *((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 [63] (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 [71] *((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 [73] 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/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/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/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) always clobbers reg byte a +Statement [23] (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 [24] (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 [25] (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 [29] *((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 [31] (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 [32] (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 [35] *((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 [36] (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 [39] *((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 [63] (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 [71] *((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 [73] 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 , @@ -8227,52 +8258,53 @@ Potential registers zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] : zp Potential registers zp ZP_BYTE:13 [ next_char::c#2 next_char::c#0 next_char::c#1 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] : zp ZP_PTR_BYTE:14 , Potential registers zp ZP_BYTE:16 [ scroll_bit::$0 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:17 [ scroll_bit::c#0 ] : zp ZP_WORD:17 , -Potential registers zp ZP_WORD:19 [ scroll_bit::$4 ] : zp ZP_WORD:19 , -Potential registers zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] : zp ZP_PTR_BYTE:21 , -Potential registers zp ZP_BYTE:23 [ scroll_bit::bits#0 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:24 [ scroll_bit::$10 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:25 [ scroll_hard::$17 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:26 [ scroll_hard::$19 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ scroll_hard::$21 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:28 [ scroll_hard::$23 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:29 [ scroll_hard::$25 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ scroll_hard::$27 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ scroll_hard::$29 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ scroll_hard::$31 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:17 [ scroll_bit::$3 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:18 [ scroll_bit::c#0 ] : zp ZP_WORD:18 , +Potential registers zp ZP_WORD:20 [ scroll_bit::$4 ] : zp ZP_WORD:20 , +Potential registers zp ZP_PTR_BYTE:22 [ scroll_bit::$5 ] : zp ZP_PTR_BYTE:22 , +Potential registers zp ZP_BYTE:24 [ scroll_bit::bits#0 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ scroll_bit::$10 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ scroll_hard::$17 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:27 [ scroll_hard::$19 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:28 [ scroll_hard::$21 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ scroll_hard::$23 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ scroll_hard::$25 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ scroll_hard::$27 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ scroll_hard::$29 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ scroll_hard::$31 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [scroll_hard] 28.15: zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] 22: zp ZP_BYTE:25 [ scroll_hard::$17 ] 22: zp ZP_BYTE:26 [ scroll_hard::$19 ] 22: zp ZP_BYTE:27 [ scroll_hard::$21 ] 22: zp ZP_BYTE:28 [ scroll_hard::$23 ] 22: zp ZP_BYTE:29 [ scroll_hard::$25 ] 22: zp ZP_BYTE:30 [ scroll_hard::$27 ] 22: zp ZP_BYTE:31 [ scroll_hard::$29 ] 22: zp ZP_BYTE:32 [ scroll_hard::$31 ] -Uplift Scope [scroll_bit] 22: zp ZP_BYTE:23 [ scroll_bit::bits#0 ] 22: zp ZP_BYTE:24 [ scroll_bit::$10 ] 21.21: zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] 12.83: zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] 11: zp ZP_BYTE:9 [ scroll_bit::b#2 ] 4: zp ZP_BYTE:16 [ scroll_bit::$0 ] 4: zp ZP_WORD:17 [ scroll_bit::c#0 ] 4: zp ZP_WORD:19 [ scroll_bit::$4 ] 4: zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] -Uplift Scope [] 9.17: zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] 8.97: zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] 8.88: zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] 8.75: zp ZP_BYTE:2 [ scroll#18 scroll#0 scroll#3 ] +Uplift Scope [scroll_hard] 28.15: zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] 22: zp ZP_BYTE:26 [ scroll_hard::$17 ] 22: zp ZP_BYTE:27 [ scroll_hard::$19 ] 22: zp ZP_BYTE:28 [ scroll_hard::$21 ] 22: zp ZP_BYTE:29 [ scroll_hard::$23 ] 22: zp ZP_BYTE:30 [ scroll_hard::$25 ] 22: zp ZP_BYTE:31 [ scroll_hard::$27 ] 22: zp ZP_BYTE:32 [ scroll_hard::$29 ] 22: zp ZP_BYTE:33 [ scroll_hard::$31 ] +Uplift Scope [scroll_bit] 22: zp ZP_BYTE:24 [ scroll_bit::bits#0 ] 22: zp ZP_BYTE:25 [ scroll_bit::$10 ] 21.21: zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] 12.83: zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] 11: zp ZP_BYTE:9 [ scroll_bit::b#2 ] 4: zp ZP_BYTE:16 [ scroll_bit::$0 ] 4: zp ZP_BYTE:17 [ scroll_bit::$3 ] 4: zp ZP_WORD:18 [ scroll_bit::c#0 ] 4: zp ZP_WORD:20 [ scroll_bit::$4 ] 4: zp ZP_PTR_BYTE:22 [ scroll_bit::$5 ] +Uplift Scope [] 9.17: zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] 8.9: zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] 8.88: zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] 8.75: zp ZP_BYTE:2 [ scroll#18 scroll#0 scroll#3 ] Uplift Scope [fillscreen] 33: zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplift Scope [next_char] 8.5: zp ZP_BYTE:13 [ next_char::c#2 next_char::c#0 next_char::c#1 ] Uplift Scope [main] Uplift Scope [scroll_soft] Uplift attempts [scroll_hard] 10000/262144 (limiting to 10000) -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 ] +Uplifting [scroll_hard] best 9824 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:32 [ scroll_hard::$29 ] zp ZP_BYTE:33 [ scroll_hard::$31 ] Limited combination testing to 10000 combinations of 262144 possible. -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 [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 ] reg byte a [ scroll_bit::$3 ] zp ZP_WORD:18 [ scroll_bit::c#0 ] zp ZP_WORD:20 [ scroll_bit::$4 ] zp ZP_PTR_BYTE:22 [ 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 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ 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 ] +Attempting to uplift remaining variables inzp ZP_BYTE:33 [ 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 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 ] ] +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:22 [ scroll_bit::$5 ] ] +Coalescing zero page register [ zp ZP_WORD:18 [ scroll_bit::c#0 ] ] with [ zp ZP_WORD:20 [ scroll_bit::$4 ] ] Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] Allocated (was zp ZP_PTR_BYTE:4) zp ZP_PTR_BYTE:3 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 scroll_bit::$5 ] Allocated (was zp ZP_PTR_BYTE:7) zp ZP_PTR_BYTE:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ] Allocated (was zp ZP_PTR_BYTE:11) zp ZP_PTR_BYTE:7 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] -Allocated (was zp ZP_WORD:17) zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ] +Allocated (was zp ZP_WORD:18) zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ] Removing instruction jmp b6 Removing instruction jmp bend Removing instruction jmp b2 @@ -8329,7 +8361,7 @@ bend: //SEG7 main main: { //SEG8 [2] call fillscreen param-assignment [ ] ( main:0 [ ] ) - //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] + //SEG9 [69] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] @@ -8442,18 +8474,20 @@ scroll_bit: { jsr next_char //SEG58 scroll_bit::@8 b8: - //SEG59 [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 ] ) -- zpwo1=aby + //SEG59 [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + // (byte~) scroll_bit::$3 = (byte) next_char::c#2 // register copy reg byte a + //SEG60 [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=_word_aby sta c lda #0 sta c+1 - //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 + //SEG61 [23] (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 rol _4+1 asl _4 rol _4+1 - //SEG61 [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 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG62 [24] (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 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN adc _4+1 sta _5+1 - //SEG62 [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 ] ) + //SEG63 [25] (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 ] ) // (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 [26] 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/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [26] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG66 [26] 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 + //SEG67 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG68 [26] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] b1_from_scroll_bit: - //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy - //SEG71 scroll_bit::@1 + //SEG69 [26] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG70 [26] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG71 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG72 scroll_bit::@1 b1: - //SEG72 [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 ] ) - //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG73 [27] 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 ] ) + //SEG74 [42] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] scroll_hard_from_b1: jsr scroll_hard - //SEG74 scroll_bit::@7 + //SEG75 scroll_bit::@7 b7: - //SEG75 asm { sei } + //SEG76 asm { sei } sei - //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 + //SEG77 [29] *((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 [30] 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/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG79 [30] 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/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG80 [30] 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] + //SEG81 [30] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] b2_from_b3: - //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG83 scroll_bit::@2 + //SEG82 [30] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG83 [30] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG84 scroll_bit::@2 b2: - //SEG84 [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 ] ) -- aby=zpptrby1_derefidx_xby + //SEG85 [31] (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 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff 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 + //SEG86 [32] (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/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 + //SEG87 [33] 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 scroll_bit::@5 b5: - //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG89 [34] 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/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG90 [34] 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] + //SEG91 [34] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG92 [34] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG92 scroll_bit::@3 + //SEG93 scroll_bit::@3 b3: - //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 + //SEG94 [35] *((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/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 + //SEG95 [36] (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 @@ -8538,24 +8572,24 @@ scroll_bit: { bcc !+ inc sc+1 !: - //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 + //SEG96 [37] (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/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 + //SEG97 [38] 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 + //SEG98 scroll_bit::@6 b6: - //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 + //SEG99 [39] *((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 } + //SEG100 asm { cli } cli - //SEG100 scroll_bit::@return + //SEG101 scroll_bit::@return breturn: - //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG102 [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG102 scroll_hard +//SEG103 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -8565,122 +8599,122 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .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 [43] 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/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG105 [43] 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 [43] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] b1_from_b1: - //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 + //SEG107 [43] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG108 scroll_hard::@1 b1: - //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 + //SEG109 [44] (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:27 [ 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 + //SEG110 [45] *((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:27 [ 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/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 + //SEG111 [46] (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:27 [ 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 + //SEG112 [47] *((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:27 [ 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/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 + //SEG113 [48] (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:27 [ 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 + //SEG114 [49] *((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:27 [ 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/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 + //SEG115 [50] (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:27 [ 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 + //SEG116 [51] *((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:27 [ 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/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 + //SEG117 [52] (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:27 [ 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 + //SEG118 [53] *((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:27 [ 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/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 + //SEG119 [54] (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:27 [ 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 + //SEG120 [55] *((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:27 [ 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/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 + //SEG121 [56] (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:27 [ 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 + //SEG122 [57] *((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:27 [ 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/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 + //SEG123 [58] (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:27 [ 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 + //SEG124 [59] *((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:27 [ 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 + //SEG125 [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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 + //SEG126 [61] 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:27 [ 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 + //SEG127 scroll_hard::@return breturn: - //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG128 [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG128 next_char +//SEG129 next_char next_char: { - //SEG129 [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 ] ) -- aby=_deref_zpptrby1 + //SEG130 [63] (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 ] ) -- aby=_deref_zpptrby1 ldy #0 lda (nxt),y - //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + //SEG131 [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 cmp #'@' bne b1_from_next_char - //SEG131 next_char::@2 + //SEG132 next_char::@2 b2: - //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + //SEG133 [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 lda TEXT - //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG134 [66] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: - //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + //SEG135 [66] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG136 [66] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 jmp b1 - //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG137 [66] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] b1_from_next_char: - //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG139 next_char::@1 + //SEG138 [66] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG139 [66] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG140 next_char::@1 b1: - //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG141 [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG141 next_char::@return + //SEG142 next_char::@return breturn: - //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + //SEG143 [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) rts } -//SEG143 fillscreen +//SEG144 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG145 [70] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG146 [70] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG147 [70] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG148 fillscreen::@1 + //SEG148 [70] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG149 fillscreen::@1 b1: - //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG150 [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG151 [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //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 + //SEG152 [73] 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 @@ -8689,9 +8723,9 @@ fillscreen: { cmp #fillscreen] + //SEG9 [69] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] @@ -8838,18 +8872,20 @@ scroll_bit: { jsr next_char //SEG58 scroll_bit::@8 b8: - //SEG59 [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 ] ) -- zpwo1=aby + //SEG59 [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + // (byte~) scroll_bit::$3 = (byte) next_char::c#2 // register copy reg byte a + //SEG60 [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=_word_aby sta c lda #0 sta c+1 - //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 + //SEG61 [23] (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 rol _4+1 asl _4 rol _4+1 - //SEG61 [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 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG62 [24] (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 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN adc _4+1 sta _5+1 - //SEG62 [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 ] ) + //SEG63 [25] (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 ] ) // (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 [26] 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/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [26] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG66 [26] 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 + //SEG67 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG68 [26] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] b1_from_scroll_bit: - //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy - //SEG71 scroll_bit::@1 + //SEG69 [26] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG70 [26] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG71 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG72 scroll_bit::@1 b1: - //SEG72 [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 ] ) - //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG73 [27] 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 ] ) + //SEG74 [42] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] scroll_hard_from_b1: jsr scroll_hard - //SEG74 scroll_bit::@7 + //SEG75 scroll_bit::@7 b7: - //SEG75 asm { sei } + //SEG76 asm { sei } sei - //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 + //SEG77 [29] *((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 [30] 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/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG79 [30] 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/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG80 [30] 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] + //SEG81 [30] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] b2_from_b3: - //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG83 scroll_bit::@2 + //SEG82 [30] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG83 [30] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG84 scroll_bit::@2 b2: - //SEG84 [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 ] ) -- aby=zpptrby1_derefidx_xby + //SEG85 [31] (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 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff 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 + //SEG86 [32] (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/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 + //SEG87 [33] 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 scroll_bit::@5 b5: - //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG89 [34] 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/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG90 [34] 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] + //SEG91 [34] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG92 [34] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG92 scroll_bit::@3 + //SEG93 scroll_bit::@3 b3: - //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 + //SEG94 [35] *((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/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 + //SEG95 [36] (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 @@ -8934,24 +8970,24 @@ scroll_bit: { bcc !+ inc sc+1 !: - //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 + //SEG96 [37] (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/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 + //SEG97 [38] 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 + //SEG98 scroll_bit::@6 b6: - //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 + //SEG99 [39] *((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 } + //SEG100 asm { cli } cli - //SEG100 scroll_bit::@return + //SEG101 scroll_bit::@return breturn: - //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG102 [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG102 scroll_hard +//SEG103 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -8961,122 +8997,122 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .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 [43] 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/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG105 [43] 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 [43] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] b1_from_b1: - //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 + //SEG107 [43] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG108 scroll_hard::@1 b1: - //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 + //SEG109 [44] (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:27 [ 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 + //SEG110 [45] *((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:27 [ 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/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 + //SEG111 [46] (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:27 [ 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 + //SEG112 [47] *((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:27 [ 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/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 + //SEG113 [48] (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:27 [ 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 + //SEG114 [49] *((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:27 [ 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/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 + //SEG115 [50] (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:27 [ 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 + //SEG116 [51] *((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:27 [ 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/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 + //SEG117 [52] (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:27 [ 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 + //SEG118 [53] *((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:27 [ 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/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 + //SEG119 [54] (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:27 [ 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 + //SEG120 [55] *((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:27 [ 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/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 + //SEG121 [56] (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:27 [ 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 + //SEG122 [57] *((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:27 [ 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/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 + //SEG123 [58] (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:27 [ 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 + //SEG124 [59] *((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:27 [ 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 + //SEG125 [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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 + //SEG126 [61] 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:27 [ 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 + //SEG127 scroll_hard::@return breturn: - //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG128 [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG128 next_char +//SEG129 next_char next_char: { - //SEG129 [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 ] ) -- aby=_deref_zpptrby1 + //SEG130 [63] (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 ] ) -- aby=_deref_zpptrby1 ldy #0 lda (nxt),y - //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + //SEG131 [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 cmp #'@' bne b1_from_next_char - //SEG131 next_char::@2 + //SEG132 next_char::@2 b2: - //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + //SEG133 [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 lda TEXT - //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG134 [66] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: - //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + //SEG135 [66] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG136 [66] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 jmp b1 - //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG137 [66] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] b1_from_next_char: - //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG139 next_char::@1 + //SEG138 [66] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG139 [66] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG140 next_char::@1 b1: - //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG141 [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG141 next_char::@return + //SEG142 next_char::@return breturn: - //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + //SEG143 [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) rts } -//SEG143 fillscreen +//SEG144 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG145 [70] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG146 [70] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG147 [70] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG148 fillscreen::@1 + //SEG148 [70] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG149 fillscreen::@1 b1: - //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG150 [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG151 [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //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 + //SEG152 [73] 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 @@ -9085,9 +9121,9 @@ fillscreen: { cmp #fillscreen] + //SEG9 [69] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] @@ -9248,18 +9284,20 @@ scroll_bit: { jsr next_char //SEG58 scroll_bit::@8 b8: - //SEG59 [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 ] ) -- zpwo1=aby + //SEG59 [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + // (byte~) scroll_bit::$3 = (byte) next_char::c#2 // register copy reg byte a + //SEG60 [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=_word_aby sta c lda #0 sta c+1 - //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 + //SEG61 [23] (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 rol _4+1 asl _4 rol _4+1 - //SEG61 [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 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG62 [24] (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 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN adc _4+1 sta _5+1 - //SEG62 [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 ] ) + //SEG63 [25] (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 ] ) // (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 [26] 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/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG65 [26] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG66 [26] 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 + //SEG67 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] - //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy - //SEG71 scroll_bit::@1 + //SEG68 [26] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG69 [26] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG70 [26] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG71 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG72 scroll_bit::@1 b1: - //SEG72 [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 ] ) - //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG73 [27] 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 ] ) + //SEG74 [42] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] jsr scroll_hard - //SEG74 scroll_bit::@7 + //SEG75 scroll_bit::@7 b7: - //SEG75 asm { sei } + //SEG76 asm { sei } sei - //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 + //SEG77 [29] *((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 [30] 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/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG79 [30] 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/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG80 [30] 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] - //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG83 scroll_bit::@2 + //SEG81 [30] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG82 [30] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG83 [30] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG84 scroll_bit::@2 b2: - //SEG84 [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 ] ) -- aby=zpptrby1_derefidx_xby + //SEG85 [31] (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 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff 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 + //SEG86 [32] (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/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 + //SEG87 [33] 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 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/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG89 [34] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG90 [34] 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] + //SEG91 [34] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG92 [34] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG92 scroll_bit::@3 + //SEG93 scroll_bit::@3 b3: - //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 + //SEG94 [35] *((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/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 + //SEG95 [36] (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 @@ -9340,24 +9378,24 @@ scroll_bit: { bcc !+ inc sc+1 !: - //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 + //SEG96 [37] (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/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 + //SEG97 [38] 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 scroll_bit::@6 b6: - //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 + //SEG99 [39] *((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 } + //SEG100 asm { cli } cli - //SEG100 scroll_bit::@return + //SEG101 scroll_bit::@return breturn: - //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG102 [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG102 scroll_hard +//SEG103 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -9367,119 +9405,119 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .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 [43] 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/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG105 [43] 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 + //SEG106 [43] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG107 [43] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG108 scroll_hard::@1 b1: - //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 + //SEG109 [44] (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:27 [ 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 + //SEG110 [45] *((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:27 [ 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/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 + //SEG111 [46] (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:27 [ 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 + //SEG112 [47] *((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:27 [ 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/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 + //SEG113 [48] (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:27 [ 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 + //SEG114 [49] *((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:27 [ 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/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 + //SEG115 [50] (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:27 [ 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 + //SEG116 [51] *((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:27 [ 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/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 + //SEG117 [52] (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:27 [ 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 + //SEG118 [53] *((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:27 [ 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/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 + //SEG119 [54] (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:27 [ 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 + //SEG120 [55] *((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:27 [ 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/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 + //SEG121 [56] (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:27 [ 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 + //SEG122 [57] *((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:27 [ 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/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 + //SEG123 [58] (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:27 [ 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 + //SEG124 [59] *((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:27 [ 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 + //SEG125 [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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 + //SEG126 [61] 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:27 [ 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 + //SEG127 scroll_hard::@return breturn: - //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG128 [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG128 next_char +//SEG129 next_char next_char: { - //SEG129 [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 ] ) -- aby=_deref_zpptrby1 + //SEG130 [63] (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 ] ) -- aby=_deref_zpptrby1 ldy #0 lda (nxt),y - //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + //SEG131 [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 cmp #'@' bne b1 - //SEG131 next_char::@2 + //SEG132 next_char::@2 b2: - //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + //SEG133 [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 lda TEXT - //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG134 [66] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: - //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + //SEG135 [66] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG136 [66] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 jmp b1 - //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG139 next_char::@1 + //SEG137 [66] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG138 [66] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG139 [66] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG140 next_char::@1 b1: - //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG141 [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG141 next_char::@return + //SEG142 next_char::@return breturn: - //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + //SEG143 [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) rts } -//SEG143 fillscreen +//SEG144 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG145 [70] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG146 [70] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG148 fillscreen::@1 + //SEG147 [70] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG148 [70] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG149 fillscreen::@1 b1: - //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG150 [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG151 [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //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 + //SEG152 [73] 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 @@ -9488,9 +9526,9 @@ fillscreen: { cmp #fillscreen] + //SEG9 [69] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -9645,18 +9683,20 @@ scroll_bit: { //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 ] ) jsr next_char //SEG58 scroll_bit::@8 - //SEG59 [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 ] ) -- zpwo1=aby + //SEG59 [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + // (byte~) scroll_bit::$3 = (byte) next_char::c#2 // register copy reg byte a + //SEG60 [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=_word_aby sta c lda #0 sta c+1 - //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 + //SEG61 [23] (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 rol _4+1 asl _4 rol _4+1 - //SEG61 [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 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG62 [24] (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 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN adc _4+1 sta _5+1 - //SEG62 [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 ] ) + //SEG63 [25] (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 ] ) // (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/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG64 [26] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG65 [26] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG66 [26] 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 + //SEG67 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] - //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy - //SEG71 scroll_bit::@1 + //SEG68 [26] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG69 [26] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG70 [26] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG71 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG72 scroll_bit::@1 b1: - //SEG72 [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 ] ) - //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG73 [27] 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 ] ) + //SEG74 [42] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] jsr scroll_hard - //SEG74 scroll_bit::@7 - //SEG75 asm { sei } + //SEG75 scroll_bit::@7 + //SEG76 asm { sei } sei - //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 + //SEG77 [29] *((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/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [30] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG79 [30] 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/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG80 [30] 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] - //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG83 scroll_bit::@2 + //SEG81 [30] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG82 [30] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG83 [30] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG84 scroll_bit::@2 b2: - //SEG84 [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 ] ) -- aby=zpptrby1_derefidx_xby + //SEG85 [31] (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 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff 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 + //SEG86 [32] (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/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 + //SEG87 [33] 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/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG88 scroll_bit::@5 + //SEG89 [34] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG90 [34] 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] + //SEG91 [34] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG92 [34] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG92 scroll_bit::@3 + //SEG93 scroll_bit::@3 b3: - //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 + //SEG94 [35] *((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/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 + //SEG95 [36] (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 @@ -9733,22 +9773,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //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 + //SEG96 [37] (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/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 + //SEG97 [38] 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/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 + //SEG98 scroll_bit::@6 + //SEG99 [39] *((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 } + //SEG100 asm { cli } cli - //SEG100 scroll_bit::@return - //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG101 scroll_bit::@return + //SEG102 [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG102 scroll_hard +//SEG103 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -9758,113 +9798,113 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .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/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [43] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG105 [43] 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 + //SEG106 [43] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG107 [43] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG108 scroll_hard::@1 b1: - //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 + //SEG109 [44] (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:27 [ 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 + //SEG110 [45] *((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:27 [ 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/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 + //SEG111 [46] (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:27 [ 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 + //SEG112 [47] *((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:27 [ 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/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 + //SEG113 [48] (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:27 [ 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 + //SEG114 [49] *((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:27 [ 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/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 + //SEG115 [50] (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:27 [ 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 + //SEG116 [51] *((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:27 [ 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/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 + //SEG117 [52] (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:27 [ 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 + //SEG118 [53] *((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:27 [ 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/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 + //SEG119 [54] (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:27 [ 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 + //SEG120 [55] *((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:27 [ 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/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 + //SEG121 [56] (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:27 [ 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 + //SEG122 [57] *((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:27 [ 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/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 + //SEG123 [58] (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:27 [ 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 + //SEG124 [59] *((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:27 [ 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 + //SEG125 [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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 + //SEG126 [61] 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:27 [ 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 - //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG127 scroll_hard::@return + //SEG128 [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG128 next_char +//SEG129 next_char next_char: { - //SEG129 [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 ] ) -- aby=_deref_zpptrby1 + //SEG130 [63] (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 ] ) -- aby=_deref_zpptrby1 ldy #0 lda (nxt),y - //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + //SEG131 [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 cmp #'@' bne b1 - //SEG131 next_char::@2 - //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + //SEG132 next_char::@2 + //SEG133 [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 lda TEXT - //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + //SEG134 [66] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG135 [66] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG136 [66] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 jmp b1 - //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG139 next_char::@1 + //SEG137 [66] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG138 [66] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG139 [66] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG140 next_char::@1 b1: - //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG141 [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG141 next_char::@return - //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + //SEG142 next_char::@return + //SEG143 [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) rts } -//SEG143 fillscreen +//SEG144 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG145 [70] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG146 [70] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG148 fillscreen::@1 + //SEG147 [70] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG148 [70] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG149 fillscreen::@1 b1: - //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG150 [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG151 [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //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 + //SEG152 [73] 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 @@ -9873,8 +9913,8 @@ fillscreen: { cmp #fillscreen] + //SEG9 [69] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -10009,18 +10049,20 @@ scroll_bit: { //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 ] ) jsr next_char //SEG58 scroll_bit::@8 - //SEG59 [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 ] ) -- zpwo1=aby + //SEG59 [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + // (byte~) scroll_bit::$3 = (byte) next_char::c#2 // register copy reg byte a + //SEG60 [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=_word_aby sta c lda #0 sta c+1 - //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 + //SEG61 [23] (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 rol _4+1 asl _4 rol _4+1 - //SEG61 [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 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG62 [24] (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 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN adc _4+1 sta _5+1 - //SEG62 [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 ] ) + //SEG63 [25] (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 ] ) // (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/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG64 [26] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG65 [26] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG66 [26] 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 - //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] - //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy - //SEG71 scroll_bit::@1 + //SEG67 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG68 [26] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG69 [26] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG70 [26] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG71 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG72 scroll_bit::@1 b1: - //SEG72 [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 ] ) - //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG73 [27] 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 ] ) + //SEG74 [42] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] jsr scroll_hard - //SEG74 scroll_bit::@7 - //SEG75 asm { sei } + //SEG75 scroll_bit::@7 + //SEG76 asm { sei } sei - //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 + //SEG77 [29] *((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/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [30] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG79 [30] 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/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG80 [30] 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 - //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG83 scroll_bit::@2 + //SEG81 [30] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG82 [30] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG83 [30] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG84 scroll_bit::@2 b2: - //SEG84 [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 ] ) -- aby=zpptrby1_derefidx_xby + //SEG85 [31] (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 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff 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 + //SEG86 [32] (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/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 + //SEG87 [33] 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/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG88 scroll_bit::@5 + //SEG89 [34] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG90 [34] 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] + //SEG91 [34] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG92 [34] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG92 scroll_bit::@3 + //SEG93 scroll_bit::@3 b3: - //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 + //SEG94 [35] *((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/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 + //SEG95 [36] (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 @@ -10095,22 +10137,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //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 + //SEG96 [37] (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/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 + //SEG97 [38] 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/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 + //SEG98 scroll_bit::@6 + //SEG99 [39] *((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 } + //SEG100 asm { cli } cli - //SEG100 scroll_bit::@return - //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG101 scroll_bit::@return + //SEG102 [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG102 scroll_hard +//SEG103 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -10120,110 +10162,110 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .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/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [43] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG105 [43] 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 + //SEG106 [43] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG107 [43] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG108 scroll_hard::@1 b1: - //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 + //SEG109 [44] (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:27 [ 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 + //SEG110 [45] *((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:27 [ 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/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 + //SEG111 [46] (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:27 [ 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 + //SEG112 [47] *((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:27 [ 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/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 + //SEG113 [48] (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:27 [ 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 + //SEG114 [49] *((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:27 [ 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/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 + //SEG115 [50] (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:27 [ 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 + //SEG116 [51] *((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:27 [ 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/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 + //SEG117 [52] (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:27 [ 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 + //SEG118 [53] *((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:27 [ 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/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 + //SEG119 [54] (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:27 [ 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 + //SEG120 [55] *((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:27 [ 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/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 + //SEG121 [56] (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:27 [ 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 + //SEG122 [57] *((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:27 [ 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/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 + //SEG123 [58] (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:27 [ 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 + //SEG124 [59] *((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:27 [ 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 + //SEG125 [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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 + //SEG126 [61] 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:27 [ 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 - //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG127 scroll_hard::@return + //SEG128 [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG128 next_char +//SEG129 next_char next_char: { - //SEG129 [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 ] ) -- aby=_deref_zpptrby1 + //SEG130 [63] (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 ] ) -- aby=_deref_zpptrby1 ldy #0 lda (nxt),y - //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + //SEG131 [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 cmp #'@' bne b1 - //SEG131 next_char::@2 - //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + //SEG132 next_char::@2 + //SEG133 [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 lda TEXT - //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + //SEG134 [66] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG135 [66] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG136 [66] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG139 next_char::@1 + //SEG137 [66] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG138 [66] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG139 [66] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG140 next_char::@1 b1: - //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG141 [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG141 next_char::@return - //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + //SEG142 next_char::@return + //SEG143 [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) rts } -//SEG143 fillscreen +//SEG144 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG145 [70] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG146 [70] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG148 fillscreen::@1 + //SEG147 [70] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG148 [70] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG149 fillscreen::@1 b1: - //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG150 [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG151 [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //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 + //SEG152 [73] 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 @@ -10232,8 +10274,8 @@ fillscreen: { cmp #fillscreen] + //SEG9 [69] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -10362,18 +10404,20 @@ scroll_bit: { //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 ] ) jsr next_char //SEG58 scroll_bit::@8 - //SEG59 [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 ] ) -- zpwo1=aby + //SEG59 [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + // (byte~) scroll_bit::$3 = (byte) next_char::c#2 // register copy reg byte a + //SEG60 [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=_word_aby sta c lda #0 sta c+1 - //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 + //SEG61 [23] (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 rol _4+1 asl _4 rol _4+1 - //SEG61 [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 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG62 [24] (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 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN adc _4+1 sta _5+1 - //SEG62 [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 ] ) + //SEG63 [25] (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 ] ) // (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/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG64 [26] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG65 [26] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG66 [26] 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 - //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] - //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy - //SEG71 scroll_bit::@1 + //SEG67 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG68 [26] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG69 [26] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG70 [26] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG71 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG72 scroll_bit::@1 b1: - //SEG72 [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 ] ) - //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG73 [27] 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 ] ) + //SEG74 [42] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] jsr scroll_hard - //SEG74 scroll_bit::@7 - //SEG75 asm { sei } + //SEG75 scroll_bit::@7 + //SEG76 asm { sei } sei - //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 + //SEG77 [29] *((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/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [30] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG79 [30] 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/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG80 [30] 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 - //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG83 scroll_bit::@2 + //SEG81 [30] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG82 [30] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG83 [30] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG84 scroll_bit::@2 b2: - //SEG84 [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 ] ) -- aby=zpptrby1_derefidx_xby + //SEG85 [31] (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 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff 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 + //SEG86 [32] (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/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 + //SEG87 [33] 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/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG88 scroll_bit::@5 + //SEG89 [34] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG90 [34] 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] + //SEG91 [34] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG92 [34] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG92 scroll_bit::@3 + //SEG93 scroll_bit::@3 b3: - //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 + //SEG94 [35] *((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/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 + //SEG95 [36] (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 @@ -10448,22 +10492,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //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 + //SEG96 [37] (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/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 + //SEG97 [38] 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/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 + //SEG98 scroll_bit::@6 + //SEG99 [39] *((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 } + //SEG100 asm { cli } cli - //SEG100 scroll_bit::@return - //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG101 scroll_bit::@return + //SEG102 [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG102 scroll_hard +//SEG103 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -10473,110 +10517,110 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .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/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [43] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG105 [43] 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 + //SEG106 [43] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG107 [43] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG108 scroll_hard::@1 b1: - //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 + //SEG109 [44] (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:27 [ 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 + //SEG110 [45] *((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:27 [ 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/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 + //SEG111 [46] (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:27 [ 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 + //SEG112 [47] *((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:27 [ 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/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 + //SEG113 [48] (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:27 [ 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 + //SEG114 [49] *((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:27 [ 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/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 + //SEG115 [50] (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:27 [ 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 + //SEG116 [51] *((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:27 [ 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/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 + //SEG117 [52] (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:27 [ 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 + //SEG118 [53] *((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:27 [ 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/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 + //SEG119 [54] (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:27 [ 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 + //SEG120 [55] *((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:27 [ 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/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 + //SEG121 [56] (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:27 [ 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 + //SEG122 [57] *((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:27 [ 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/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 + //SEG123 [58] (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:27 [ 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 + //SEG124 [59] *((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:27 [ 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 + //SEG125 [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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 + //SEG126 [61] 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:27 [ 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 - //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG127 scroll_hard::@return + //SEG128 [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG128 next_char +//SEG129 next_char next_char: { - //SEG129 [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 ] ) -- aby=_deref_zpptrby1 + //SEG130 [63] (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 ] ) -- aby=_deref_zpptrby1 ldy #0 lda (nxt),y - //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + //SEG131 [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 cmp #'@' bne b1 - //SEG131 next_char::@2 - //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + //SEG132 next_char::@2 + //SEG133 [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 lda TEXT - //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + //SEG134 [66] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG135 [66] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG136 [66] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG139 next_char::@1 + //SEG137 [66] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG138 [66] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG139 [66] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG140 next_char::@1 b1: - //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG141 [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG141 next_char::@return - //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + //SEG142 next_char::@return + //SEG143 [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) rts } -//SEG143 fillscreen +//SEG144 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG145 [70] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG146 [70] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG148 fillscreen::@1 + //SEG147 [70] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG148 [70] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG149 fillscreen::@1 b1: - //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG150 [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG151 [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //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 + //SEG152 [73] 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 @@ -10585,8 +10629,8 @@ fillscreen: { cmp #fillscreen] + //SEG9 [69] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -10713,18 +10757,20 @@ scroll_bit: { //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 ] ) jsr next_char //SEG58 scroll_bit::@8 - //SEG59 [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 ] ) -- zpwo1=aby + //SEG59 [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + // (byte~) scroll_bit::$3 = (byte) next_char::c#2 // register copy reg byte a + //SEG60 [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=_word_aby sta c lda #0 sta c+1 - //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 + //SEG61 [23] (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 rol _4+1 asl _4 rol _4+1 - //SEG61 [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 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG62 [24] (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 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN adc _4+1 sta _5+1 - //SEG62 [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 ] ) + //SEG63 [25] (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 ] ) // (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/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG64 [26] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG65 [26] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG66 [26] 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 - //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] - //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy - //SEG71 scroll_bit::@1 + //SEG67 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG68 [26] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG69 [26] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG70 [26] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG71 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG72 scroll_bit::@1 b1: - //SEG72 [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 ] ) - //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG73 [27] 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 ] ) + //SEG74 [42] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] jsr scroll_hard - //SEG74 scroll_bit::@7 - //SEG75 asm { sei } + //SEG75 scroll_bit::@7 + //SEG76 asm { sei } sei - //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 + //SEG77 [29] *((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/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [30] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG79 [30] 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/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG80 [30] 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 - //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG83 scroll_bit::@2 + //SEG81 [30] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG82 [30] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG83 [30] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG84 scroll_bit::@2 b2: - //SEG84 [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 ] ) -- aby=zpptrby1_derefidx_xby + //SEG85 [31] (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 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff 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 + //SEG86 [32] (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/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 + //SEG87 [33] 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/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG88 scroll_bit::@5 + //SEG89 [34] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG90 [34] 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] + //SEG91 [34] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG92 [34] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG92 scroll_bit::@3 + //SEG93 scroll_bit::@3 b3: - //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 + //SEG94 [35] *((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/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 + //SEG95 [36] (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 @@ -10799,22 +10845,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //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 + //SEG96 [37] (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/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 + //SEG97 [38] 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/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 + //SEG98 scroll_bit::@6 + //SEG99 [39] *((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 } + //SEG100 asm { cli } cli - //SEG100 scroll_bit::@return - //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG101 scroll_bit::@return + //SEG102 [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG102 scroll_hard +//SEG103 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -10824,110 +10870,110 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .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/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [43] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG105 [43] 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 + //SEG106 [43] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG107 [43] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG108 scroll_hard::@1 b1: - //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 + //SEG109 [44] (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:27 [ 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 + //SEG110 [45] *((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:27 [ 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/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 + //SEG111 [46] (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:27 [ 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 + //SEG112 [47] *((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:27 [ 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/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 + //SEG113 [48] (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:27 [ 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 + //SEG114 [49] *((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:27 [ 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/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 + //SEG115 [50] (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:27 [ 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 + //SEG116 [51] *((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:27 [ 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/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 + //SEG117 [52] (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:27 [ 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 + //SEG118 [53] *((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:27 [ 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/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 + //SEG119 [54] (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:27 [ 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 + //SEG120 [55] *((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:27 [ 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/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 + //SEG121 [56] (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:27 [ 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 + //SEG122 [57] *((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:27 [ 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/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 + //SEG123 [58] (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:27 [ 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 + //SEG124 [59] *((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:27 [ 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 + //SEG125 [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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 + //SEG126 [61] 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:27 [ 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 - //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG127 scroll_hard::@return + //SEG128 [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG128 next_char +//SEG129 next_char next_char: { - //SEG129 [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 ] ) -- aby=_deref_zpptrby1 + //SEG130 [63] (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 ] ) -- aby=_deref_zpptrby1 ldy #0 lda (nxt),y - //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + //SEG131 [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 cmp #'@' bne b1 - //SEG131 next_char::@2 - //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + //SEG132 next_char::@2 + //SEG133 [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 lda TEXT - //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + //SEG134 [66] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG135 [66] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG136 [66] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG139 next_char::@1 + //SEG137 [66] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG138 [66] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG139 [66] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG140 next_char::@1 b1: - //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG141 [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG141 next_char::@return - //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + //SEG142 next_char::@return + //SEG143 [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) rts } -//SEG143 fillscreen +//SEG144 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG145 [70] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG146 [70] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG148 fillscreen::@1 + //SEG147 [70] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG148 [70] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG149 fillscreen::@1 b1: - //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG150 [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG151 [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //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 + //SEG152 [73] 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 @@ -10936,8 +10982,8 @@ fillscreen: { cmp #fillscreen] + //SEG9 [69] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -11207,18 +11255,20 @@ scroll_bit: { //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 ] ) jsr next_char //SEG58 scroll_bit::@8 - //SEG59 [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 ] ) -- zpwo1=aby + //SEG59 [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] ) + // (byte~) scroll_bit::$3 = (byte) next_char::c#2 // register copy reg byte a + //SEG60 [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=_word_aby sta c lda #0 sta c+1 - //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 + //SEG61 [23] (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 rol _4+1 asl _4 rol _4+1 - //SEG61 [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 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG62 [24] (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 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN adc _4+1 sta _5+1 - //SEG62 [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 ] ) + //SEG63 [25] (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 ] ) // (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/word/signed word) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG64 [26] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG65 [26] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG66 [26] 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 - //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] - //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy - //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy - //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy - //SEG71 scroll_bit::@1 + //SEG67 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG68 [26] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG69 [26] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG70 [26] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG71 [26] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG72 scroll_bit::@1 b1: - //SEG72 [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 ] ) - //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + //SEG73 [27] 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 ] ) + //SEG74 [42] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] jsr scroll_hard - //SEG74 scroll_bit::@7 - //SEG75 asm { sei } + //SEG75 scroll_bit::@7 + //SEG76 asm { sei } sei - //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 + //SEG77 [29] *((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/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG78 [30] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG79 [30] 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/signed byte/word/signed word) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 + //SEG80 [30] 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 - //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG83 scroll_bit::@2 + //SEG81 [30] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG82 [30] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG83 [30] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG84 scroll_bit::@2 b2: - //SEG84 [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 ] ) -- aby=zpptrby1_derefidx_xby + //SEG85 [31] (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 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff 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 + //SEG86 [32] (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/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 + //SEG87 [33] 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/word/signed word) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + //SEG88 scroll_bit::@5 + //SEG89 [34] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG90 [34] 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] + //SEG91 [34] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG92 [34] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG92 scroll_bit::@3 + //SEG93 scroll_bit::@3 b3: - //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 + //SEG94 [35] *((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/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 + //SEG95 [36] (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 @@ -11293,22 +11343,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //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 + //SEG96 [37] (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/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 + //SEG97 [38] 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/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 + //SEG98 scroll_bit::@6 + //SEG99 [39] *((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 } + //SEG100 asm { cli } cli - //SEG100 scroll_bit::@return - //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG101 scroll_bit::@return + //SEG102 [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG102 scroll_hard +//SEG103 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -11318,110 +11368,110 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .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/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [43] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG105 [43] 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 + //SEG106 [43] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG107 [43] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG108 scroll_hard::@1 b1: - //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 + //SEG109 [44] (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:27 [ 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 + //SEG110 [45] *((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:27 [ 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/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 + //SEG111 [46] (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:27 [ 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 + //SEG112 [47] *((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:27 [ 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/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 + //SEG113 [48] (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:27 [ 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 + //SEG114 [49] *((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:27 [ 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/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 + //SEG115 [50] (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:27 [ 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 + //SEG116 [51] *((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:27 [ 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/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 + //SEG117 [52] (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:27 [ 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 + //SEG118 [53] *((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:27 [ 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/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 + //SEG119 [54] (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:27 [ 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 + //SEG120 [55] *((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:27 [ 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/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 + //SEG121 [56] (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:27 [ 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 + //SEG122 [57] *((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:27 [ 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/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 + //SEG123 [58] (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:27 [ 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 + //SEG124 [59] *((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:27 [ 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 + //SEG125 [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ 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/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 + //SEG126 [61] 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:27 [ 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 - //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG127 scroll_hard::@return + //SEG128 [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG128 next_char +//SEG129 next_char next_char: { - //SEG129 [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 ] ) -- aby=_deref_zpptrby1 + //SEG130 [63] (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 ] ) -- aby=_deref_zpptrby1 ldy #0 lda (nxt),y - //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + //SEG131 [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 cmp #'@' bne b1 - //SEG131 next_char::@2 - //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + //SEG132 next_char::@2 + //SEG133 [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 lda TEXT - //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + //SEG134 [66] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG135 [66] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG136 [66] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG139 next_char::@1 + //SEG137 [66] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG138 [66] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG139 [66] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG140 next_char::@1 b1: - //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG141 [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG141 next_char::@return - //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + //SEG142 next_char::@return + //SEG143 [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) rts } -//SEG143 fillscreen +//SEG144 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG145 [70] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG146 [70] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG148 fillscreen::@1 + //SEG147 [70] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG148 [70] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG149 fillscreen::@1 b1: - //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG150 [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG151 [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //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 + //SEG152 [73] 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 @@ -11430,8 +11480,8 @@ fillscreen: { cmp #main::@1] @@ -668,18 +695,21 @@ main: { rts //SEG15 main::@2 b2: - //SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_zpby1=zpsby1 + //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- zpby1=_byte_zpsby1 lda i + sta _2 + //SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + lda _2 ldx j sta screen,x - //SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 + //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 inc i - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- zpby1=_inc_zpby1 + //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- zpby1=_inc_zpby1 inc j - //SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } @@ -699,17 +729,16 @@ MISSING FRAGMENTS 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 , +Potential registers zp ZP_BYTE:4 [ main::$2 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 30.25: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 25.67: zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 28.6: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 22: zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:4 [ main::$2 ] Uplift Scope [] -Uplifting [main] best 495 combination reg byte x [ main::j#2 main::j#1 ] zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] +Uplifting [main] best 495 combination reg byte x [ main::j#2 main::j#1 ] zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] Uplifting [] best 495 combination MISSING FRAGMENTS asby=_inc_asby - cowo1_derefidx_xby=asby - cowo1_derefidx_yby=asby xsby_lt_coby1_then_la1 ysby_lt_coby1_then_la1 Removing instruction jmp b1 @@ -760,17 +789,18 @@ main: { rts //SEG15 main::@2 b2: - //SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=zpsby1 + //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- aby=_byte_zpsby1 lda i + //SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=aby sta screen,x - //SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 + //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 inc i - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby + //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby inx - //SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } @@ -818,17 +848,18 @@ main: { rts //SEG15 main::@2 b2: - //SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=zpsby1 + //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- aby=_byte_zpsby1 lda i + //SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=aby sta screen,x - //SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 + //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 inc i - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby + //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby inx - //SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } @@ -875,16 +906,17 @@ main: { rts //SEG15 main::@2 b2: - //SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=zpsby1 + //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- aby=_byte_zpsby1 lda i + //SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=aby sta screen,x - //SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 + //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 inc i - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby + //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby inx - //SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } @@ -893,20 +925,22 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() +(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@return (signed byte) main::i (signed byte) main::i#1 i zp ZP_SBYTE:2 11.0 -(signed byte) main::i#2 i zp ZP_SBYTE:2 14.666666666666666 +(signed byte) main::i#2 i zp ZP_SBYTE:2 11.0 (byte) main::j (byte) main::j#1 reg byte x 22.0 -(byte) main::j#2 reg byte x 8.25 +(byte) main::j#2 reg byte x 6.6000000000000005 (byte[]) main::screen -(const byte[]) main::screen#0 screen = (word/signed word) 1024 +(const byte[]) main::screen#0 screen = ((byte*))(word/signed word) 1024 zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] +reg byte a [ main::$2 ] FINAL CODE //SEG0 Basic Upstart @@ -945,16 +979,17 @@ main: { rts //SEG15 main::@2 b2: - //SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=zpsby1 + //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- aby=_byte_zpsby1 lda i + //SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=aby sta screen,x - //SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 + //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 inc i - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby + //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby inx - //SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy - //SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy + //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 } 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 c2e37c6c9..6aa720444 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 @@ -2,17 +2,19 @@ (label) @begin (label) @end (void()) main() +(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@return (signed byte) main::i (signed byte) main::i#1 i zp ZP_SBYTE:2 11.0 -(signed byte) main::i#2 i zp ZP_SBYTE:2 14.666666666666666 +(signed byte) main::i#2 i zp ZP_SBYTE:2 11.0 (byte) main::j (byte) main::j#1 reg byte x 22.0 -(byte) main::j#2 reg byte x 8.25 +(byte) main::j#2 reg byte x 6.6000000000000005 (byte[]) main::screen -(const byte[]) main::screen#0 screen = (word/signed word) 1024 +(const byte[]) main::screen#0 screen = ((byte*))(word/signed word) 1024 zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] +reg byte a [ main::$2 ] 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 a66e5b841..e1f6c4c49 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/useglobal.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/useglobal.log @@ -19,7 +19,7 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from *((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1 @@ -36,7 +36,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 *((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1 @@ -55,7 +55,7 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) @@ -74,7 +74,7 @@ main::@return: scope:[main] from main CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) @@ -107,7 +107,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) @@ -126,7 +126,7 @@ Alias (byte*) SCREEN#0 = (byte*) SCREEN#1 (byte*) SCREEN#2 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 to:@1 main: scope:[main] from @1 *((byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 @@ -139,7 +139,7 @@ main::@return: scope:[main] from main to:@end @end: scope:[] from @1 -Constant (const byte*) SCREEN#0 = 1024 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -160,7 +160,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@return @@ -376,7 +376,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) 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 8d3a55e6a..7eee15ace 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() (label) main::@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log index 7c2935231..eab8197d5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log @@ -379,8 +379,8 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) COLORS ← (word) 55296 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS ← ((byte*)) (word) 55296 (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 } @@ -629,8 +629,8 @@ Removing empty block findcol::@15 Removing empty block findcol::@18 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) COLORS ← (word) 55296 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS ← ((byte*)) (word) 55296 (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 } @@ -848,8 +848,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 - (byte*) COLORS ← (word) 55296 + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS ← ((byte*)) (word) 55296 (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 } @@ -1093,8 +1093,8 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) COLORS#0 ← (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS#0 ← ((byte*)) (word) 55296 (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 } @@ -1547,8 +1547,8 @@ findcol::@17: scope:[findcol] from findcol::@8 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) COLORS#0 ← (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS#0 ← ((byte*)) (word) 55296 (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 } @@ -2394,8 +2394,8 @@ Culled Empty Block (label) @6 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) COLORS#0 ← (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS#0 ← ((byte*)) (word) 55296 (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 } @@ -2855,8 +2855,8 @@ 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/signed word) 1024 - (byte*) COLORS#0 ← (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS#0 ← ((byte*)) (word) 55296 (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 } @@ -3378,8 +3378,8 @@ 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/signed word) 1024 - (byte*) COLORS#0 ← (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS#0 ← ((byte*)) (word) 55296 (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 } @@ -3678,8 +3678,8 @@ 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/signed word) 1024 - (byte*) COLORS#0 ← (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS#0 ← ((byte*)) (word) 55296 (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 } @@ -3939,8 +3939,8 @@ Self Phi Eliminated (byte[]) COLS#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) COLORS#0 ← (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS#0 ← ((byte*)) (word) 55296 (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 } @@ -4195,8 +4195,8 @@ Redundant Phi (byte[]) COLS#1 (byte[]) COLS#11 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) COLORS#0 ← (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS#0 ← ((byte*)) (word) 55296 (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 } @@ -4428,8 +4428,8 @@ 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/signed word) 1024 - (byte*) COLORS#0 ← (word) 55296 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (byte*) COLORS#0 ← ((byte*)) (word) 55296 (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 } @@ -4628,8 +4628,8 @@ findcol::@17: scope:[findcol] from findcol::@8 to:@end @end: scope:[] from @5 -Constant (const byte*) SCREEN#0 = 1024 -Constant (const byte*) COLORS#0 = 55296 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte*) COLORS#0 = ((byte*))55296 Constant (const byte) FILL#0 = 230 Constant (const byte) numpoints#0 = 6 Constant (const byte[]) XPOS#0 = { 5, 15, 6, 34, 21, 31 } @@ -5995,13 +5995,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) COLORS -(const byte*) COLORS#0 = (word) 55296 +(const byte*) COLORS#0 = ((byte*))(word) 55296 (byte[]) COLS (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/word/signed word) 230 (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte[]) XPOS (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 @@ -10402,13 +10402,13 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) COLORS -(const byte*) COLORS#0 COLORS = (word) 55296 +(const byte*) COLORS#0 COLORS = ((byte*))(word) 55296 (byte[]) COLS (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/word/signed word) 230 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte[]) XPOS (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 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 ac45fe526..0f348b443 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.sym @@ -2,13 +2,13 @@ (label) @begin (label) @end (byte*) COLORS -(const byte*) COLORS#0 COLORS = (word) 55296 +(const byte*) COLORS#0 COLORS = ((byte*))(word) 55296 (byte[]) COLS (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/word/signed word) 230 (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte[]) XPOS (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 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 12a9b22fb..7e1d6a6d0 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log @@ -91,9 +91,9 @@ SYMBOLS INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (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 + (byte*) SCREEN2 ← ((byte*)) (word/signed word~) $0 to:@1 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -154,9 +154,9 @@ Removing empty block @2 Removing empty block sum2::@1 CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (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 + (byte*) SCREEN2 ← ((byte*)) (word/signed word~) $0 to:@3 main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -204,9 +204,9 @@ PROCEDURE MODIFY VARIABLE ANALYSIS CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from - (byte*) SCREEN ← (word/signed word) 1024 + (byte*) SCREEN ← ((byte*)) (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 + (byte*) SCREEN2 ← ((byte*)) (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -271,9 +271,9 @@ Completing Phi functions... Completing Phi functions... CONTROL FLOW GRAPH SSA @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 ) @@ -356,9 +356,9 @@ sum2::@return: scope:[sum2] from sum2 CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 ) @@ -522,9 +522,9 @@ Culled Empty Block (label) @4 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 + (byte*) SCREEN#0 ← ((byte*)) (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 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 ) @@ -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/signed word~) $0 +Alias (byte*) SCREEN2#0 = (byte*) SCREEN2#4 (byte*) SCREEN2#5 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,8 +629,9 @@ Alias (byte) sum2::c#0 = (byte) sum2::c#1 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -698,8 +699,9 @@ Self Phi Eliminated (byte*) SCREEN2#1 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -759,8 +761,9 @@ Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -817,8 +820,9 @@ Simple Condition (boolean~) main::$6 if((byte) main::i#1!=(byte/signed byte/word Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from - (byte*) SCREEN#0 ← (word/signed word) 1024 - (byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 + (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0 to:@3 main: scope:[main] from @3 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 @@ -870,11 +874,66 @@ sum2::@return: scope:[sum2] from sum2 to:@end @end: scope:[] from @3 -Constant (const byte*) SCREEN#0 = 1024 -Constant (const byte*) SCREEN2#0 = 1024+40 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const word/signed word) $0 = 1024+40 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN2#0 ← ((byte*)) (const word/signed word) $0 + to:@3 +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/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 + call sum param-assignment + to:main::@3 +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/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 + call sum2 param-assignment + to:main::@4 +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/signed byte/word/signed word) 11) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@4 + return + to:@return +sum: scope:[sum] from main::@1 + (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 + (byte) sum::return#0 ← (byte~) sum::$0 + (byte) sum::c#0 + to:sum::@return +sum::@return: scope:[sum] from sum + return + to:@return +sum2: scope:[sum2] from main::@3 + (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 + (byte) sum2::return#0 ← (byte~) sum2::$0 + (byte) sum2::c#0 + to:sum2::@return +sum2::@return: scope:[sum2] from sum2 + return + to:@return +@3: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @3 + +Constant (const byte*) SCREEN2#0 = ((byte*))$0 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH @begin: scope:[] from to:@3 main: scope:[main] from @3 @@ -948,6 +1007,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 $0 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40 Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @@ -1007,9 +1067,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 = (word/signed word) 1024 +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40 +(const byte*) SCREEN2#0 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40 (void()) main() (byte~) main::$0 (byte~) main::$1 @@ -2081,9 +2141,9 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte*) SCREEN -(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40 +(const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40 (void()) main() (byte~) main::$0 reg byte x 7.333333333333333 (byte~) main::$1 reg byte a 7.333333333333333 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 cfac0db71..96cbf76d3 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/signed word) 1024 +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (byte*) SCREEN2 -(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40 +(const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40 (void()) main() (byte~) main::$0 reg byte x 7.333333333333333 (byte~) main::$1 reg byte a 7.333333333333333 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.cfg b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.cfg index 71a498749..1bb8a0aa3 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.cfg @@ -16,7 +16,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 ] ) + [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 ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.log b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.log index 707753e36..a5171cf83 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.log @@ -23,7 +23,7 @@ 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::$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 @@ -65,7 +65,7 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte*) main::zpptr ← (word/signed word) 4096 + (byte*) main::zpptr ← ((byte*)) (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 @@ -77,7 +77,7 @@ main::@2: scope:[main] from main::@1 main::@4 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::$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 @@ -111,7 +111,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from - (byte*) main::zpptr ← (word/signed word) 4096 + (byte*) main::zpptr ← ((byte*)) (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 @@ -123,7 +123,7 @@ main::@2: scope:[main] from main::@1 main::@4 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::$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 @@ -156,7 +156,7 @@ 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::zpptr ← ((byte*)) (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 @@ -168,7 +168,7 @@ main::@2: scope:[main] from main::@1 main::@4 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::$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 @@ -205,7 +205,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte*) main::zpptr#0 ← ((byte*)) (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 @@ -226,7 +226,7 @@ main::@3: scope:[main] from main::@2 main::@3 (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::$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 @@ -264,7 +264,7 @@ 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::zpptr#0 ← ((byte*)) (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 @@ -285,7 +285,7 @@ main::@3: scope:[main] from main::@2 main::@3 (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::$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 @@ -374,7 +374,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte*) main::zpptr#0 ← ((byte*)) (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 @@ -395,7 +395,7 @@ main::@3: scope:[main] from main::@2 main::@3 (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::$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 @@ -438,7 +438,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte*) main::zpptr#0 ← ((byte*)) (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 @@ -458,7 +458,7 @@ main::@3: scope:[main] from main::@2 main::@3 (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 + (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 @@ -491,7 +491,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte*) main::zpptr#0 ← ((byte*)) (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 @@ -511,7 +511,7 @@ main::@3: scope:[main] from main::@2 main::@3 (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 + (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 @@ -544,7 +544,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte*) main::zpptr#0 ← ((byte*)) (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 @@ -561,7 +561,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 + (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 @@ -594,7 +594,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte*) main::zpptr#0 ← (word/signed word) 4096 + (byte*) main::zpptr#0 ← ((byte*)) (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 @@ -611,7 +611,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 + (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 @@ -633,7 +633,7 @@ main::@return: scope:[main] from main::@5 to:@end @end: scope:[] from @1 -Constant (const byte*) main::zpptr#0 = 4096 +Constant (const byte*) main::zpptr#0 = ((byte*))4096 Constant (const byte) main::j#0 = 0 Constant (const byte) main::i#0 = 0 Constant (const byte) main::k#0 = 0 @@ -655,7 +655,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 + (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 @@ -697,7 +697,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 + (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 @@ -737,7 +737,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 + (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 @@ -776,7 +776,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 + (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 @@ -814,7 +814,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 + (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 @@ -862,7 +862,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 + (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 @@ -907,7 +907,7 @@ FINAL SYMBOL TABLE (word) main::w (word) main::w#0 (byte*) main::zpptr -(const byte*) main::zpptr#0 = (word/signed word) 4096 +(const byte*) main::zpptr#0 = ((byte*))(word/signed word) 4096 (byte*) main::zpptr2 (byte*) main::zpptr2#0 (byte*) main::zpptr2#1 @@ -935,7 +935,7 @@ main::@2: scope:[main] from main::@1 main::@8 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 + (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 @@ -993,7 +993,7 @@ main::@2: scope:[main] from main::@1 main::@8 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 ] + [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 ] @@ -1056,7 +1056,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 ] + [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 ] @@ -1093,7 +1093,7 @@ main::@2: scope:[main] from main::@1 main::@4 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 ] ) + [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 ] ) @@ -1254,7 +1254,7 @@ main: { 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 + //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 @@ -1307,14 +1307,14 @@ Statement [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) ma 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 [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 [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 , @@ -1409,7 +1409,7 @@ main: { 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 + //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 @@ -1520,7 +1520,7 @@ main: { 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 + //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 @@ -1624,7 +1624,7 @@ main: { 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 + //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 @@ -1719,7 +1719,7 @@ main: { 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 + //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 @@ -1783,7 +1783,7 @@ FINAL SYMBOL TABLE (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 +(const byte*) main::zpptr#0 zpptr = ((byte*))(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 @@ -1844,7 +1844,7 @@ main: { 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 + //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 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.sym b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.sym index 4953fca4f..017f36e75 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/zpptr.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpptr.sym @@ -20,7 +20,7 @@ (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 +(const byte*) main::zpptr#0 zpptr = ((byte*))(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 diff --git a/src/main/java/dk/camelot64/kickc/test/signed-bytes.kc b/src/main/java/dk/camelot64/kickc/test/signed-bytes.kc index 676ee79db..97c6f09ed 100644 --- a/src/main/java/dk/camelot64/kickc/test/signed-bytes.kc +++ b/src/main/java/dk/camelot64/kickc/test/signed-bytes.kc @@ -4,7 +4,7 @@ void main() { byte j = 0; signed byte i = -127; while(i<127) { - screen[j] = i; + screen[j] = (byte)i; i++; j++; } diff --git a/src/main/java/dk/camelot64/kickc/test/typemismatch.kc b/src/main/java/dk/camelot64/kickc/test/typemismatch.kc new file mode 100644 index 000000000..d4d1f8b7c --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/typemismatch.kc @@ -0,0 +1,5 @@ +// Type mismatch - should fail gracefully +void main() { + word w = 5000; + byte b = w; +} \ No newline at end of file